材料中的光速+defparam用法+C语言的宏使用

发布时间 2023-09-03 19:16:01作者: 大浪淘沙、

材料中的光速

https://blog.csdn.net/weixin_43229030/article/details/106745060
空气中,相对介电常数和相对导磁率都为1, 光的速度为12 in/ns
绝大多数互连线中的光速约为12 in/ns/sqrt(4)=6 in/ns。当估算电路板上互连线中信号的连度对,就可以假定它约为6 in/ns。

defparam的用法

https://www.cnblogs.com/zhangshitong/p/3861397.html
verilog调用底层模块只改变参数的传递。上述博文值看第一条,第2和3条可以省略,
因为我这边语法报错,而第一个,defparam的主要用法,还是覆盖parameter的值,
不加defparam关键字有语法错误。
当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值。

module top ( .....)
    input....;
    output....;
    defparam U1.Para1 = 10 ;
    M1 U1 (..........);
endmodule

module M1(....);
    parameter para1 = 5 ;
    input...;
    output...;
    ......
endmodule

C语言的宏使用

http://c.biancheng.net/view/446.html

字符串化参数运算符

一元运算符 # 常称为字符串化运算符(stringify operator 或 stringizing operator),因为它会把宏调用时的实参转换为字符串。# 的操作数必须是宏替换文本中的形参。当形参名称出现在替换文本中,并且具有前缀 # 字符时,预处理器会把与该形参对应的实参放到一对双引号中,形成一个字符串字面量。

#define printDBL( exp ) printf( #exp " = %f ", exp )
printDBL( 4 * atan(1.0));           // atan()在math.h中定义
# 预编译得到的结果,前面为字符串
printf( "4 * atan(1.0)" " = %f ", 4 * atan(1.0));

字符串化运算符

#define showArgs(...) puts(#__VA_ARGS__)
showArgs( one\n,       "2\n", three );

记号粘贴运算符

使用 ## 运算符时,至少有一个操作数是宏的形参。在这种情况下,实参值会先替换形参,然后等记号粘贴完成后,才进行宏展开。

#define TEXT_A "Hello, world!"
#define msg(x) puts( TEXT_ ## x )
msg(A);
# 展开后如下
puts( TEXT_A );