Post

《各类脚本工具语言记录》

《各类脚本工具语言记录》

时序图工具WaveDrom Hitchhiker’s Guide to the WaveDrom

vitis_user_guide: User Managed Mode in Vitis Unified Embedded IDE • Vitis Tutorials: Embedded Software • 阅读器 • AMD 技术信息门户

verilog在tb中的一些操作

仿真的一些数据

//-------------------- example1 --------------------// 只需要通过修改txt,不用重新编译来仿真
file = $fopen("AAA.csv", "r"); 
cnt  = 0;
while (!$feof(file))  begin
  $fscanf(file, "%f,%f", timeBai[cnt], dat_vector[cnt]); //读取所有行,匹配格式为%f,%f
  cnt ++;
 end
$fclose(file);
//-------------------- example2 --------------------// 这个很有意思啊
看下面代码,这里通过txt来控制cmd及对应数据

example2代码

SVA

sva写在rtl(设计)里面 不要写在tb里面

`ifdef SVA
 Bis0: assert property(Evt_b0)
 else
  $error("b is not 0 @ %t", $time);
 Bis1: assert property(Evt_b1)
  else
   $display("b is not 1 @ %t", $time);
 property Evt_b0;
  @(posedge clk) a |-> ##1 ~b;       
 endproperty

 property Evt_b1;
  @(posedge clk) (rst_n && ~a) |-> ##1 b;
 endproperty
`endif
//下图展示了在verdi中查看SVA

SVA

scala语法

参数声明格式

1
virtualChannelParams: Seq[UserVirtualChannelParams] = Seq(UserVirtualChannelParams())

在这里,Seq[UserVirtualChannelParams]类型注解,用于指定参数 virtualChannelParams 的类型。它不是返回类型的定义。

在 Scala 中,参数的声明格式通常是:参数名: 参数类型 = 默认值

1
channelGen: Parameters => ChannelOutwardNode => ChannelOutwardNode = p => u => u

在这里也是,参数类型为Parameters => ChannelOutwardNode => ChannelOutwardNode,该类型为一个函数。接受Parameters并返回一个xx函数,xx函数接受一个类型为 ChannelOutwardNode 的参数,最终返回一个类型为 ChannelOutwardNode 的值。

tcl

vivado的tcl用法

  • 变量置换:set y [expr $x+100]
  • 赋值:set b ${a.1}
  • List:list 1 2 {3 4}

Makefile

  1. 关于部分makefile的路径管理
    • \$(abspath ./sim_c/include)

      abspath函数会将给定的相对路径转换为绝对路径。在这个例子中,./sim_c/include是一个相对路径,$(abspath ./sim_c/include)会将其转换为绝对路径

    • \$(addprefix -I, $(INC_PATH))

      :函数会将指定的前缀-I添加到INC_PATH变量中的每个路径前面

    • $@

      1
      2
      3
      4
      
      target: dependency1 dependency2
       echo "Target is $@"  # target
       echo "First dependency is $<" # dependency1
       echo "All dependencies are $^" # dependency1 dependency2
      

python

官方帮助: https://docs.python.org/zh-cn/3/

python正则表达匹配规则

  • r'/\*.*$ r'^.*\*/'
  • ^表示行的开始,
  • .*表示任何字符(除了换行符)0次或多次
  • re.sub('//.*$','',lines[i]) 替换
  • re.findall(r'/\*',lines[i]) 找到所有匹配模式,返回元组列表
  • re.search(pattern, string, flags)描整个字符串并返回第一个成功的匹配。
This post is licensed under CC BY 4.0 by the author.