sv2v/test/relong/double_clock.v

41 lines
777 B
Verilog

`default_nettype none
module Device(
input wire clock, clear,
output wire [3:0] data
);
SharedMemory memory(
.clock1(clock),
.clock2(clock),
.clear(clear), // Verilog doesn't support inferred ports
.data1(data[1:0]),
.data2(data[3:2])
);
endmodule
module SharedMemory(
input wire clock1, clock2, clear,
output reg [1:0] data1, data2
);
reg [3:0] memory;
// Just a dumb example to generate interesting values
always @(posedge clock1) begin
if(clear)
memory <= 4'b0;
else
memory <= {~memory[2:0], 1'b0};
end
always @(posedge clock1)
data1 <= memory[1:0];
always @(posedge clock2) begin
data2 <= memory[3:2];
end
endmodule