| |
| module TopModule( |
| input logic clk, |
| input logic rst, |
| input logic [1:0] sig, |
| input logic flip, |
| output logic [15:0] passThrough, |
| output logic [21:0] outOther, |
| output logic [1:0] sig_out); |
| |
| |
| logic MyInterfaceInstance_setting; |
| logic [3:0] MyInterfaceInstance_other_setting; |
| logic [1:0] MyInterfaceInstance_mysig_out; |
| |
| SubModule1 u_SubModule1 ( |
| .clk(clk), |
| .rst(rst), |
| .u_MyInterface_setting(MyInterfaceInstance_setting), |
| .u_MyInterface_mysig_out(MyInterfaceInstance_mysig_out), |
| .u_MyInterface_other_setting(MyInterfaceInstance_other_setting), |
| .outOther(outOther), |
| .passThrough (passThrough), |
| .sig (sig) |
| ); |
| |
| assign sig_out = MyInterfaceInstance_mysig_out; |
| |
| |
| assign MyInterfaceInstance_setting = flip; |
| |
| endmodule |
| |
| |
| module SubModule1( |
| input logic clk, |
| input logic rst, |
| input logic u_MyInterface_setting, |
| output logic [3:0] u_MyInterface_other_setting, |
| output logic [1:0] u_MyInterface_mysig_out, |
| output logic [21:0] outOther, |
| input logic [1:0] sig, |
| output logic [15:0] passThrough |
| ); |
| |
| always @(posedge clk or posedge rst) |
| if(rst) |
| u_MyInterface_mysig_out <= 0; |
| else begin |
| if(u_MyInterface_setting) |
| u_MyInterface_mysig_out <= sig; |
| else |
| u_MyInterface_mysig_out <= ~sig; |
| end |
| |
| logic MyInterfaceInstanceInSub_setting; |
| logic [21:0] MyInterfaceInstanceInSub_other_setting; |
| logic [1:0] MyInterfaceInstanceInSub_mysig_out; |
| |
| |
| SubModule2 u_SubModule2 ( |
| .clk(clk), |
| .rst(rst), |
| .u_MyInterfaceInSub2_setting(u_MyInterface_setting), |
| .u_MyInterfaceInSub2_mysig_out(u_MyInterface_mysig_out), |
| .u_MyInterfaceInSub2_other_setting(u_MyInterface_other_setting), |
| .u_MyInterfaceInSub3_setting(MyInterfaceInstanceInSub_setting), |
| .u_MyInterfaceInSub3_mysig_out(MyInterfaceInstanceInSub_mysig_out), |
| .u_MyInterfaceInSub3_other_setting(MyInterfaceInstanceInSub_other_setting), |
| .passThrough (passThrough) |
| ); |
| assign outOther = MyInterfaceInstanceInSub_other_setting; |
| |
| assign MyInterfaceInstanceInSub_setting = 0; |
| assign MyInterfaceInstanceInSub_mysig_out = sig; |
| |
| endmodule |
| |
| module SubModule2( |
| |
| input logic clk, |
| input logic rst, |
| input logic u_MyInterfaceInSub2_setting, |
| output logic [3:0] u_MyInterfaceInSub2_other_setting, |
| input logic [1:0] u_MyInterfaceInSub2_mysig_out, |
| input logic u_MyInterfaceInSub3_setting, |
| output logic [21:0] u_MyInterfaceInSub3_other_setting, |
| input logic [1:0] u_MyInterfaceInSub3_mysig_out, |
| output logic [15:0] passThrough |
| |
| ); |
| |
| always @(u_MyInterfaceInSub3_mysig_out) begin |
| if (u_MyInterfaceInSub3_mysig_out == 2'b00) |
| u_MyInterfaceInSub3_other_setting[21:0] = 1000; |
| else if (u_MyInterfaceInSub3_mysig_out == 2'b01) |
| u_MyInterfaceInSub3_other_setting[21:0] = 2000; |
| else if (u_MyInterfaceInSub3_mysig_out == 2'b10) |
| u_MyInterfaceInSub3_other_setting[21:0] = 3000; |
| else |
| u_MyInterfaceInSub3_other_setting[21:0] = 4000; |
| end |
| |
| assign passThrough[7:0] = 124; |
| assign passThrough[15:8] = 200; |
| |
| endmodule |