小编And*_*esM的帖子

递归地将整个文件夹添加到存储库

我正在尝试将一个分支添加到GitHub上的主分支,并将一个文件夹推送到该分支.

分支的文件夹结构如下 - SocialApp/SourceCode/DevTrunk/SocialApp,所有源代码文件都在最后一个文件夹中.

我使用以下Git命令:

git add *
git commit -m with the message
git push
Run Code Online (Sandbox Code Playgroud)

这只是将第一个文件夹"SocialApp"推送到GitHub并忽略文件夹内的文件夹SourceCode.我该如何解决?

git github

231
推荐指数
11
解决办法
42万
查看次数

定义包内的接口

IEEE Std 1800-2012中,我们可以找到包的描述和这些信息:

类型,网络,变量,任务,函数,序列,属性和检查器可以在包中声明

我想知道,如果有任何特殊原因导致无法在包内定义接口?在我看来它可能是有用的,但显然标准的创建者不会同意.

system-verilog

6
推荐指数
1
解决办法
3221
查看次数

在SystemVerilog断言中处理重置

以下两个属性有何不同?

property p1;
    @(posedge clk) disable iff (Reset) b ##1 c;
endproperty

property p2;
    @(posedge clk) (~Reset & b) ##1 c;
endproperty

assert property (p1);
assert property (p2);
Run Code Online (Sandbox Code Playgroud)

system-verilog system-verilog-assertions

5
推荐指数
1
解决办法
1736
查看次数

SystemVerilog:隐含运算符与|->

最近出现了一个问题,通常的隐含运算符(|->)和impliesSystemVerilog中的运算符之间有什么区别。不幸的是我找不到一个明确的答案。但是,我收集了以下信息:

SystemVerilog LRM 1800-2012

  • 第16.12.7节隐含和iff属性

    property_expr1 implies property_expr2
    仅当property_expr1的值为false或property_expr2的值为true时,此形式的属性的值为true。

  • §F.3.4.3.2 派生布尔运算符

    p1 implies p2 ≡ (not p1 or p2)

  • §F.3.4.3.4 派生的条件运算符

    (if(b) P) ≡ (b |-> P)

但是,LRM并未真正指出实际的区别是什么。我假设在错误的先行情况下(成功与空前成功),它们的评估有所不同,但是我无法找到此假设的任何来源或证据。此外,我知道implies操作员与OneSpin等正式验证工具结合使用非常普遍。

有人可以帮我吗?

PS:似乎在下一本书中对此问题有一个答案:SystemVerilog断言手册,第三版。但是155美元对我来说太过分了,只是为了得到这个问题的答案:)

implication system-verilog system-verilog-assertions

4
推荐指数
1
解决办法
2484
查看次数

使用System-Verilog进行串行测试和断言

我有一个verilog模块的串行输出,我想使用system-verilog进行测试。

给定正确的串行输入“ SI”(其值为8'h9A),称为“ SO”的输出将输出类似于8'hC6的输出。

是否有一种无需明确描述每个信号的简单方法来编码/解码串行IO?

例如:

assert property @(posedge clk) $rose(EN) |-> ##[1:3] SI ##1 !SI[*2] ##1 SI[*2] ##1 !SI ##1 SI ##1 !SI
                                             ##[1:3] SO[*2] ##1 !SO[*3] ##1 SO[*2] ##1 !SO;
Run Code Online (Sandbox Code Playgroud)

它看起来像一团混乱,几乎不可读。我非常想写

8'h9A ##[1:3] 8'hC6
Run Code Online (Sandbox Code Playgroud)

但显然这是行不通的。任何建议或示例都将受到欢迎。提前致谢。

testing verification verilog system-verilog system-verilog-assertions

3
推荐指数
1
解决办法
1212
查看次数

系统 Verilog - 等待语句

我对等待语句的确切含义感到困惑。

在这种情况下会发生什么:

forever begin
    wait (vif.xn_valid == 1'b1);
    @(posedge vif.clk);
end
Run Code Online (Sandbox Code Playgroud)

wait语句是否阻塞?是个

@(posedge vif.clk)
Run Code Online (Sandbox Code Playgroud)

每次在循环内执行,无论等待表达式的计算如何?

在这种情况下:

forever begin
    wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
Run Code Online (Sandbox Code Playgroud)

#0 fact_log2_samp_t = vif.fact_log2_samp; 仅当 wait 表达式的计算结果为 true 时才执行wait() 之后的代码吗?

system-verilog

3
推荐指数
1
解决办法
5万
查看次数

分析SystemVerilog中的压缩结构以确定它的大小?

在SystemVerilog中有没有办法分析打包结构并确定它的总体大小?

typedef struct packed unsigned {
    logic [15:0]    field_1;
    logic  [7:0]    field_2;
    logic [15:0]    field_3;
    logic  [4:0]    field_4;
} my_struct;
Run Code Online (Sandbox Code Playgroud)

例如,我希望能够以程序化的方式确定上述结构的大小为45.

我查看了IEEE 1800-2012 SystemVerilog语言参考手册的"聚合数据类型"部分(第7章),但没有看到这样的内容.

这可能吗?如果是这样,怎么样?

verilog system-verilog

2
推荐指数
1
解决办法
4207
查看次数

如何在systemverilog断言中使用整个运算符

这是一个规范:如果信号a被置位,那么它必须被置位直到信号b被置位然后它应该在下一个时钟边沿取消置位.我正在阅读LRM的16.9.9(以及http://www.testbench.in/AS_06_SEQUENCES.html)和我理解的方式,上面提到的规范可以写成

   property a2b_notA;
        @(posedge clk) ($rose (a) ##0 (a throughout b)) |=> (~a);
   endproperty
   a_a2b_notA: assert property (a2b_notA);
Run Code Online (Sandbox Code Playgroud)

然而,这在启动后第二个时钟边沿立即失败,我无法弄清楚原因.

assertions system-verilog system-verilog-assertions

2
推荐指数
1
解决办法
8300
查看次数

SystemVerilog 中一组变量的循环随机化

我试图在系统 verilog 中随机化 3 个不同的变量,但以循环方式。我的意思是,我有以下 3 个变量

rand int a;
rand int b;
rand int c;

constraint c_a{
  a inside {1,2};     
}
constraint c_b{
  b inside {1,2,3,4,5,6};
}
constraint c_c{
  c inside {1,2,3}
}
Run Code Online (Sandbox Code Playgroud)

有了上述约束,所有 3 个变量 (2x6x3) 总共有 36 种组合。

但如果我们运行 36 次循环,如下所示:

repeat(36) begin
  this.randomize(a,b,c);
  $display("%d   %d   %d", a,b,c);
end
Run Code Online (Sandbox Code Playgroud)

我们不会击中所有可能的组合,因为某些组合可能会重复。因此,我希望找到一种方法,通过精确运行循环 36 次来实现所有这些组合。

我编写了一种强力方法来实现此目的,方法是声明另一个 rand 变量来表示每个组合并在其上使用 randc,如下所示:

int a;
int b;
int c;
randc int k;

constraint c_k{
  k inside {[1:36]};
}

repeat(36) begin
  this.randomize(k);
  // randomizing variable …
Run Code Online (Sandbox Code Playgroud)

verilog constraints system-verilog

2
推荐指数
1
解决办法
1753
查看次数

系统verilog正则表达式

据我所知,系统verilog没有很好的内置正则表达式支持。

如何在 systemVerilog 中检查 srting 是否与以下正则表达式匹配:“\d+(ns|ps|us)”

regex system-verilog

2
推荐指数
1
解决办法
7213
查看次数

$past 在系统 Verilog 断言中的用法

我想检查变量的当前值是否为“1”,则变量的先前值应该为“0”。我在系统 Verilog 断言中使用 $past。这里我检查cal_frame_mode是否=1,那么它是cal_frame_mode=0的先前值。我的代码如下。但是,我看到断言失败。当我检查波形时,它的行为正确。第一次检查后 2 个时钟后断言标记。如何在仅检查一个时钟周期后停止此断言?

property p_NOP_2_RX_CAL;
  @(posedge clk)
  (cal_frame_mode==3'b001) |-> ##2 $past(cal_frame_mode)==3'b000;  
endproperty

assert_nop2cal : assert property(p_NOP_2_RX_CAL);
Run Code Online (Sandbox Code Playgroud)

system-verilog system-verilog-assertions

0
推荐指数
1
解决办法
2万
查看次数