System verilog 组合逻辑的偏斜延迟建模

System verilog 组合逻辑的偏斜延迟建模,system-verilog,System Verilog,我需要帮助为不同的输入输出路径建模具有不同延迟的块 input A; input [3:0] B, C; output [3:0] Y; Y=B xor C如果A=1,则Y=0 当posedge A(上升延迟)和NEGDEDGE A(下降延迟)时,延时分别为10us和5us 和B,C->Y延迟为1us(仅当A=1时适用) 对于我的情况,我可能需要使用过程方式,赋值语句可能不适合。对于不可合成的模型,您可以使用#延迟结构与`时间刻度到模型延迟'相结合。类似于下面的代码 `timescale 1u

我需要帮助为不同的输入输出路径建模具有不同延迟的块

input A;
input [3:0] B, C;
output [3:0] Y;
Y=B xor C如果A=1,则Y=0

当posedge A(上升延迟)和NEGDEDGE A(下降延迟)时,延时分别为10us和5us

B,C->Y
延迟为1us(仅当A=1时适用)


对于我的情况,我可能需要使用过程方式,赋值语句可能不适合。

对于不可合成的模型,您可以使用#延迟结构与`时间刻度到模型延迟'相结合。类似于下面的代码

`timescale 1us/1us

module delayModule(A,B,C,Y);
   input A;
   input [3:0] B, C; // this should probably be output
   output [3:0] Y;

   reg [3:0]    tmpb, tmpy;

   always @(posedge A)
       #10us tmpb <= 1;
   always @(negedge A)
       #5us tmpb <= 0;

   always @* begin
     if (A == 1)
       #1us tmpy =(B^C);
   end
   assign B = tmpb;
   assign Y = tmpy;

endmodule // delayModule
时间刻度为1us/1us 模块延迟模块(A、B、C、Y); 输入A; 输入[3:0]B,C;//这可能是输出 输出[3:0]Y; reg[3:0]tmpb,tmpy; 始终@(posedge A)
#10us tmpb这里有一些对我最有效的方法

`timescale 1us/1ns

module xor_w_enabled(input A, input B, input C, output Y);
wire A_delayed;
wire B_xor_C_delayed;

assign #1 B_xor_C_delayed = B^C;
assign #(10,5) A_delayed = A;

assign Y = (A_delayed == 1) ? B_xor_C_delayed : 0;

endmodule

如果我遗漏了什么,请告诉我。

是针对可合成模型的吗?@Serge否,这不是针对可合成模型的。我不认为有像assign B=。。。B作为输入是否合法?有拼写错误吗?@VinayakBhat-Right,我认为应该是
输出
,可能是OP的拼写错误,但这是合法的。上面的工作可以在