Code Browser Pages:
| #ifndef CFG_INTF_CLASS #define CFG_INTF_CLASS #ifndef INPUT_EDGE #define INPUT_EDGE PSAMPLE #-1 #endif #ifndef OUTPUT_EDGE #define OUTPUT_EDGE PHOLD #1 #endif interface cfg_intf { input clk CLOCK ; input [15:0] CD_out INPUT_EDGE ; output CSB OUTPUT_EDGE; output WRB OUTPUT_EDGE; output CPU_init_end OUTPUT_EDGE; output [15:0] CD_in OUTPUT_EDGE; output [7:0] CA OUTPUT_EDGE; } class cfg_driver { string name ; task new(string name); function bit [15:0] read_CD_out (); task drive_CSB (bit CSB ); task drive_WRB (bit WRB ); task drive_CPU_init_end (bit CPU_init_end ); task drive_CD_in (bit [15:0] CD_in ); task drive_CA (bit [7:0] CA ); task posedge_clk ( ); } task cfg_driver::new(string name){ this.name = name; } function bit [15:0] cfg_driver::read_CD_out (){read_CD_out = cfg_intf.CD_out ; } task cfg_driver::drive_CSB (bit CSB ){cfg_intf.CSB = CSB ; } task cfg_driver::drive_WRB (bit WRB ){cfg_intf.WRB = WRB ; } task cfg_driver::drive_CPU_init_end (bit CPU_init_end ){cfg_intf.CPU_init_end = CPU_init_end; } task cfg_driver::drive_CD_in (bit [15:0] CD_in ){cfg_intf.CD_in = CD_in ; } task cfg_driver::drive_CA (bit [7:0] CA ){cfg_intf.CA = CA ; } task cfg_driver::posedge_clk ( ) { @(posedge cfg_intf.clk); } #endif |