mirror of
https://github.com/zachjs/sv2v.git
synced 2026-08-31 17:54:22 +02:00
support simple bundle interfaces
- fix position modport-to-modport bindings - inout logics converted to regs become outputs
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
interface bundle;
|
||||
logic [1:0] index;
|
||||
logic clock;
|
||||
logic [3:0] inp;
|
||||
logic out;
|
||||
endinterface
|
||||
|
||||
module rotator(bundle b);
|
||||
initial b.index = 0;
|
||||
always @(posedge b.clock)
|
||||
b.index <= b.index + 1;
|
||||
endmodule
|
||||
|
||||
module setter(bundle b);
|
||||
initial b.inp = '1;
|
||||
always @(posedge b.clock)
|
||||
b.inp[b.index] <= b.out;
|
||||
endmodule
|
||||
|
||||
module reducer(bundle b);
|
||||
assign b.out = ^b.inp;
|
||||
endmodule
|
||||
|
||||
module clocker(bundle b);
|
||||
initial begin
|
||||
b.clock <= 0;
|
||||
forever
|
||||
#5 b.clock <= ~b.clock;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module top;
|
||||
bundle b();
|
||||
rotator rot(b);
|
||||
setter set(b);
|
||||
reducer red(b);
|
||||
clocker clk(b);
|
||||
initial begin
|
||||
$monitor("%b %b %b %b", b.index, b.clock, b.inp, b.out);
|
||||
#100;
|
||||
$finish;
|
||||
end
|
||||
endmodule
|
||||
Reference in New Issue
Block a user