6 output logic [21:0] outOther,
9 output logic [1:0] sig_out,
10 MyInterface.submodule1 interfaceInstanceAtTop,
11 output logic [15:0] passThrough);
13 MyInterface #(.WIDTH(4)) MyInterfaceInstance();
15 SubModule1 u_SubModule1 (
18 .u_MyInterface(MyInterfaceInstance),
19 .u_MyInterfaceFromTop(interfaceInstanceAtTop),
24 assign sig_out = MyInterfaceInstance.mysig_out;
27 assign MyInterfaceInstance.setting = flip;
29 assign passThrough = MyInterfaceInstance.passThrough;
33 interface MyInterface #(
38 logic [WIDTH-1:0] other_setting;
40 logic [1:0] mysig_out;
42 logic [15:0] passThrough;
64 MyInterface.submodule1 u_MyInterface,
65 MyInterface.submodule1 u_MyInterfaceFromTop,
66 input logic [1:0] sig,
67 output logic [21:0] outOther
72 always_ff @(posedge clk or posedge rst)
74 u_MyInterface.mysig_out <= 0;
76 if(u_MyInterface.setting)
77 u_MyInterface.mysig_out <= sig;
79 u_MyInterface.mysig_out <= ~sig;
82 MyInterface #(.WIDTH(22)) MyInterfaceInstanceInSub();
84 SubModule2 u_SubModule2 (
87 .u_MyInterfaceFromTopDown(u_MyInterfaceFromTop),
88 .u_MyInterfaceInSub2(u_MyInterface),
89 .u_MyInterfaceInSub3(MyInterfaceInstanceInSub)
92 assign outOther = MyInterfaceInstanceInSub.other_setting;
94 assign MyInterfaceInstanceInSub.setting = 0;
95 assign MyInterfaceInstanceInSub.mysig_out = sig;
103 MyInterface.submodule2 u_MyInterfaceInSub2,
104 MyInterface.submodule1 u_MyInterfaceFromTopDown,
105 MyInterface.submodule2 u_MyInterfaceInSub3
109 assign u_MyInterfaceFromTopDown.mysig_out = u_MyInterfaceFromTop.setting ? 10 : 20;
112 if (u_MyInterfaceInSub3.mysig_out == 2'b00)
113 u_MyInterfaceInSub3.other_setting[21:0] = 1000;
114 else if (u_MyInterfaceInSub3.mysig_out == 2'b01)
115 u_MyInterfaceInSub3.other_setting[21:0] = 2000;
116 else if (u_MyInterfaceInSub3.mysig_out == 2'b10)
117 u_MyInterfaceInSub3.other_setting[21:0] = 3000;
119 u_MyInterfaceInSub3.other_setting[21:0] = 4000;
122 assign u_MyInterfaceInSub2.passThrough[7:0] = 124;
123 assign u_MyInterfaceInSub2.passThrough[15:8] = 200;