我有一个预处理器宏,代表我的设计的分层路径.
例:
`define HPATH top.chip.block
Run Code Online (Sandbox Code Playgroud)
我需要构造一个保存值的字符串`HPATH,所以在我的例子中字符串应该相等top.chip.block.
有没有办法构建这样的字符串?
以下尝试都没有奏效:
string hpath;
hpath = "`HPATH"; // Results in hpath = "`HPATH"
hpath = \"``HPATH\"; // Doesn't compile
hpath = `HPATH; // Doesn't compile
Run Code Online (Sandbox Code Playgroud)
我希望hpath等同于执行此分配hpath = "top.chip.block",但通过使用`HPATH而不是再次指定路径.
我无法使用,%m因为我需要在我的顶级UVM环境中的字符串,而不是在模块中.
更多背景:我想这样做的原因是因为我在UVM类库中使用后门寄存器访问.后门API需要将hdl_path设置为设计中的块,作为字符串.我已经定义了分层路径,并且在指定hdl_paths时尝试重用它们,所以我没有定义两次相同的路径.我的测试平台将使用分层路径和字符串路径.
我们使用perforce作为Visual Studio解决方案的源代码控制.使用P4和P4V.是否可以添加客户端预提交钩子?例如,确保"调试器"一词;*.js文件中不存在.可以在谷歌找到一些东西.谢谢.
我想在我的当前客户端规范的仓库中获取最新的更改列表.如果我p4 sync在工作区中执行了此操作,这实际上是同步的更改.
我尝试过p4 changes -s submitted -m1 -c [client-name],但这会返回通过我的客户端提交的最新更改.
这样做p4 changes -s submitted -m1 //depot/path/...会有效,但我不想查询客户端规范来弄清楚库路径是什么.另外,如果有多个映射,我不知道如何理解.
似乎必须有一个简单的方法来做到这一点,我错过了.
编辑
我确实需要查询客户端规范,但正如在接受的答案中所指出的,我可以使用客户端规范root作为文件路径,而不需要查看视图映射.
使用P4Python的最终解决方案:
# Get client
clientspec = p4.fetch_client()
root = clientspec["Root"]
# Get latest changenum in client mapping
changes = p4.run("changes", "-s", "submitted", "-m1", root + "/...")
changenum = changes[0]['change']
Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,通过使用perl脚本语言来促进verilog编程.现在我想编写一个脚本来扫描一个顶级的verilog文件,然后为该模块生成层次结构列表,这表明我需要从verilog文件中提取模块实例化语句,这是问题所在:
如何编写正则表达式来匹配verilog文件中的模块实例化,因为我们需要知道顶层模块文件的子模块名称.
module syncrisedgedetect(input logic sig_a, rst,clk,output logic sig_a_risedge);
logic sig_a_d1;
always @(posedge clk or negedge rst)
begin
if(!rst)
sig_a_d1<=1'b0;
else
sig_a_d1<=sig_a;
end
assign sig_a_risedge=sig_a & !sig_a_d1;
endmodule
Run Code Online (Sandbox Code Playgroud)
嗨,我在一本关于sig_a的上升沿检测的书中遇到了这个代码.任何人都能解释我的工作吗?
谢谢