Skip to content

Instantly share code, notes, and snippets.

@rahulbhadani
Last active September 9, 2022 04:37
Show Gist options
  • Save rahulbhadani/af674354ab2867f22a85c5dc9d1b2135 to your computer and use it in GitHub Desktop.
Save rahulbhadani/af674354ab2867f22a85c5dc9d1b2135 to your computer and use it in GitHub Desktop.
Master-slave JKFF
#include "JKFF.h"
#include <systemc>
int sc_main(int argc, char **argv)
{
sc_clock CLK("clk", 10.0, SC_NS, 0.5);
vector<sc_signal<bool>> sigs(7);
inverter I("1-bit-inverter");
jkff master("Master");
jkff slave("Slave");
sc_trace_file *fp;
fp = sc_create_vcd_trace_file("Trace_JKFF");
fp->set_time_unit(1.0, SC_NS);
I.in(CLK);
I.out(sigs.at(4));
/*Create Master slave JK Flip flop */
master.clk(CLK);
master.J(sigs.at(0));
master.K(sigs.at(1));
master.Q(sigs.at(2));
master.Qdash(sigs.at(3));
slave.clk(sigs.at(4));
slave.J(sigs.at(2));
slave.K(sigs.at(3));
slave.Q(sigs.at(5));
slave.Qdash(sigs.at(6));
/*Log trace */
sc_trace(fp, CLK , "CLK");
sc_trace(fp, sigs.at(0), "J");
sc_trace(fp, sigs.at(1), "K");
sc_trace(fp, sigs.at(2), "Q_master");
sc_trace(fp, sigs.at(3), "Qdash_master");
sc_trace(fp, sigs.at(5), "Q_slave");
sc_trace(fp, sigs.at(6), "Qdash_slave");
/* Run simulation */
//sc_start(1.0, SC_NS);
cout <<"Start"<<endl;
sigs.at(0).write(true);
sigs.at(1).write(true);
sc_start(1.0, SC_NS);
cout <<"Next"<<endl;
sigs.at(0).write(false);
sigs.at(1).write(true);
sc_start(1.0, SC_NS);
cout <<"Next"<<endl;
sigs.at(0).write(true);
sigs.at(1).write(true);
sc_start(1.0, SC_NS);
cout <<"Next"<<endl;
sigs.at(0).write(false);
sigs.at(1).write(true);
sc_start(1.0, SC_NS);
cout <<"Next"<<endl;
sigs.at(0).write(false);
sigs.at(1).write(false);
sc_start(1.0, SC_NS);
cout <<"Next"<<endl;
sigs.at(0).write(true);
sigs.at(1).write(false);
sc_start(1.0, SC_NS);
cout <<"Next"<<endl;
sigs.at(0).write(false);
sigs.at(1).write(false);
sc_start(1.0, SC_NS);
sc_stop();
sc_close_vcd_trace_file(fp);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment