PT: SI引起的double switch

c3756640fb1c4ed4af53c7943304d8a0.jpg

crosstalk的影响主要体现在victim(被害者)net上的transition变慢,进而引起setup/hold时序违例,这种影响在信号传播过程中可能会被放大,造成double switch问题引起功能错误。

示例如下图,n3在switch过程中受n2 aggressor影响,transition变慢,并产生的波动,在信号传播到n4时,由于前面的波动,产生了两次的switch变化。这就是double switch,这种问题会对功能产生影响。

c44e3cbdf5f14d0299a18e3d7a321003.jpg

可以用report_si_double_switching来看victim net有没有出现double switching问题,另外通过设置set si_xtalk_double_switching_mode 来控制工具检查clock_network或者full_design,report_delay_calculation -crosstalk可以报告victim net上的double switching问题。

double switch的产生是因为aggressor噪声源太强,或是victim过于敏感,所以解决办法可以是增大aggressor与victim的距离,给相邻的线加shielding,或者增大victim的driver驱动能力。

 

 

 

 

 

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以将输出语句放在循环中,分别输出每个图形的面积。可以在每个 Shape 类的子类中添加一个成员函数,用于返回该图形的名称,然后在输出语句中使用该函数获取图形名称。代码如下: ``` #include<iostream> using namespace std; class Shape { public: virtual double area() const = 0; virtual string name() const = 0; // 添加获取图形名称的函数 }; class Circle : public Shape { public: Circle(double r) : radius(r) {} virtual double area() const { return 3.14159 * radius * radius; } virtual string name() const { // 返回图形名称 return "Circle"; } protected: double radius; }; class Square : public Shape { public: Square(double s) : side(s) {} virtual double area() const { return side * side; } virtual string name() const { return "Square"; } protected: double side; }; class Rectangle : public Shape { public: Rectangle(double w, double h) : width(w), height(h) {} virtual double area() const { return width * height; } virtual string name() const { return "Rectangle"; } protected: double width, height; }; class Trapezoid : public Shape { public: Trapezoid(double t, double b, double h) : top(t), bottom(b), height(h) {} virtual double area() const { return 0.5 * (top + bottom) * height; } virtual string name() const { return "Trapezoid"; } protected: double top, bottom, height; }; class Triangle : public Shape { public: Triangle(double w, double h) : width(w), height(h) {} virtual double area() const { return 0.5 * width * height; } virtual string name() const { return "Triangle"; } protected: double width, height; }; int main() { Circle circle(12.6); Square square(3.5); Rectangle rectangle(4.5, 8.4); Trapezoid trapezoid(2.0, 4.5, 3.2); Triangle triangle(4.5, 8.4); Shape* pt[] = { &circle,&square,&rectangle,&trapezoid,&triangle }; double areas = 0.0; for (int i = 0; i < 5; i++) { cout << pt[i]->name() << ":" << pt[i]->area() << " "; // 输出图形名称和面积 areas += pt[i]->area(); } cout << endl << "total of all areas=" << areas << endl; return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾陆楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值