Chapter 9 Port Delays (端口延迟)set input/output delay

news2024/11/25 4:23:04

文章目录

    • 9.1 Input Availability---输入有效
      • 9.1.1 Min and Max Availability Time---最小和最大有效时间
      • 9.1.2 Multiple Clocks
      • 9.1.3 Understanding Input Arrival Time
    • 9.2 Output Requirement
      • 9.2.1 Min and Max Required Time
      • 9.2.2 Multiple Reference Events
      • 9.2.3 Understanding Output Required Time
    • 9.3 set_input_delay
      • 9.3.1 Clock Specification
      • 9.3.2 -level_sensitive
      • 9.3.3 Rise/Fall Qualifiers---限定符
      • 9.3.4 Min/Max Qualifiers
      • 9.3.5 -add_delay
      • 9.3.6 Clock Latency
      • 9.3.7 Completing Input Delay Constraints
    • 9.4 set_output_delay
      • 9.4.1 Clock Specification
      • 9.4.2 -level_sensitive
      • 9.4.3 Rise/Fall Qualifiers
      • 9.4.4 Min/Max Qualifiers
      • 9.4.5 -add_delay
      • 9.4.6 Clock Latency
      • 9.4.7 Completing Output Delay Constraints
    • 9.5 Relationship Among Input and Output Delay
    • 9.6 Example Timing Analysis
      • 9.6.1 Input Delay: Max---最小大输入延迟
      • 9.6.2 Input Delay: Min---最小输入延迟
      • 9.6.3 Output Delay: Max---最大输出延迟
      • 9.6.4 Output Delay: Min---最小输出延迟
    • 9.7 Negative Delays---负延迟
    • 9.8 Conclusion

  • 应用时钟约束后,所有寄存器到寄存器的路径都能定时。延迟约束必须应用在非时钟端口上。如果没有指定输入输出端口的约束,时序分析工具会假设在接口上使用最优时序要求。 并假设电路单元内部的组合逻辑本身具有整个周期,电路单元外部没有信号。

9.1 Input Availability—输入有效

  • 我们需要为每个输入端口指定输入有效时间。考虑图9.1所示的电路。对于电路单元B1,我们需要知道信号到达输入I1的时间。
    在这里插入图片描述
  • 这个到达时间可以告诉实现工具在**组合逻辑云C1(输入端口和第一个寄存器元器件之间)**中花费的时间,反过来,到达时间也决定了要求优化的等级。如果信号按时到达F1(通过组合逻辑后的第一个寄存器)并被及时锁定,那么它将允许STA工具发送报告。思考如图9.2所示的电路。
    在这里插入图片描述
  • 对于电路单元B2,需要指定输入I1的输入到达时间。当触发器由一个时钟触发时,信号从F1(前一个电路单元B1的F1)开始。这个时钟触发就充当了参考事件,参考事件发生后,信号通过线路经过触发器(Clk_to_Q延迟)、组合逻辑C1(在前一个电路单元B1中)、组合逻辑C2(在顶层中)和互连延迟。但是,如果考虑了I1的输入信号到达时间,那么延迟在C1、C2、Clk_to_Q、互连线等之间如何分配就不那么重要了。
  • 我们只需要知道参考事件发生后信号经过多长时间出现在输入端口

9.1.1 Min and Max Availability Time—最小和最大有效时间

有些情况下我们不能在输入端口指定信号有效的具体时间,如在有相同参考事件的多条路径的情况下,如图9.3所示,还有当信号到达输入端口时,PVT的变化也会引起不确定性。
在这里插入图片描述

  • 在输入端口,设计者需要指定信号可以改变的最早时间,也就是最小时间,**在这个时间之前,输入信号不能到达输入端口。**由此可以确定,输入端口的上一个值要保持到这个时间。最小时间可以确保输入信号不违反F2上的保持要求。
  • 设计者还需要指定最大时间,在这个时间内,要确保输人端口上的输入信号有效。这个时间也是最迟时间,在这个时间内,输入端口上信号的所有变化都是有效的。最大时间用于**确保信号满足B2中触发器的建立要求。**图9.4说明了最小延迟和最大延迟对数据有效窗口的影响。
    在这里插入图片描述

9.1.2 Multiple Clocks

  • 有时,一个输入信号可能由多个时钟触发,如图9.5所示的电路。到达I1的信号可能从Clk1(电路单元B1)处产生也可能从Clk2(电路单元B2)处产生。
    在这里插入图片描述
    两个触发事件可能相互独立。在这种情况下,到达时间会根据两个参考事件来指定。实现工具和STA工具会考虑每个到达时间,并同时满足这两个条件。

9.1.3 Understanding Input Arrival Time

在这里插入图片描述
回顾图9.1中的电路,**假设信号在I1处的最早有效时间是3ns,**通过组合云C1的最小延迟是4ns,那么信号到达触发器F1的最早有效时间是7ns。这样,只要触发器的保持要求小于7ns,那么新的数据就不会干扰之前数据的捕获

类似地,假如信号到达I1处的最迟时间是5ns,通过组合云C1的最大延迟是6ns,那么信号到达触发器F1的最迟有效时间是11ns。让我们进一步假设触发器F1的建立要求是0.5ns,那么只要时钟信号到达F1的时间是11.5ns或者晚一些,触发器就能可靠地捕获当前数据。


9.2 Output Requirement

  • 对于每个输出端口,都需要指定信号被采样前,在电路单元外部经过的时间。电路如图9.6所示。对于电路单元B1,我们需要知道产生输出O1后,在采样前信号需要的传输时间。
    在这里插入图片描述
  • 实现工具可以通过这个时间计算出应该在逻辑云C1(在最后一个寄存器元件F1和输出端口01之间)中放置多少逻辑。 STA工具也可以通过这个时间报告在某个时间O1上信号是否有效,这样在产生输出O1后,就有足够的时间经过电路单元的外部,电路如图9.7所示。

在这里插入图片描述

  • 对于电路单元B1,需要为输出O1指定输出要求时间(output required time)。 O1输出后,信号由电路单元B2中的触发器F2采样。触发器F2的时钟起到了参考事件的作用。在参考事件到达F2之前,信号通过线路时经过组合逻辑C2(在顶层中)、组合逻辑C3(在下一个电路单元中)存在延迟和互连延迟。

  • 信号需要在参考事件之前到达F2,这样触发器才能满足建立要求。只要考虑了在O1处的信号输出要求时间,那么延迟在C2、C3、F2的建立时间和互连线之间是如何分配的就不重要了。

  • 我们仅仅需要知道在参考事件之前在输出端口处信号有效需要多长时间。在O1外的时间越多意味着经过逻辑云C1(在寄存器和输出端口之间)的延迟越小。

  • 输出要求时间是根据信号采样之前,在电路单元外需要的时间来确定的,而不是根据输出端信号有效时间来确定的。输出要求时间可以通过计算得出。例如,如果输出延迟为6ns,这意味着信号输出后需要6ns。如果一个时钟触发器在10ns时对信号进行采样,那么信号需要在4ns时有效。

  • 在SDC中,用户指定6,即输出后需要的时间是6ns。信号应该什么时间有效可以通过计算获得。这就是输入延迟和输出延迟在概念上的不同之处。在输入端,指定的输入延迟直接给定了输入有效时间。在输出端,指定的输出延迟是信号进一步传输需要的时间。输出延迟不同于输出端信号的有效时间。


9.2.1 Min and Max Required Time

  • 有时,在输出端不太可能指定信号在输出后需要传输的精确时间。例如,从输出端到相同参考事件可能有多条路径时,如图9.8所示,PVT的变化也能引起信号到达输出端口时的不确定性。
    在这里插入图片描述
  • 设计者需要指定信号在输出后需要传输的最小时间,还需要指定输出信号从输出端口出来后需要传输的最大时间。

9.2.2 Multiple Reference Events

  • 有时,输出信号可以被多个参考事件捕获,电路如图9.9所示。
    在这里插入图片描述
  • 从O1出来的信号可以被Clk1捕获,也可以被Clk2捕获。这两个捕获事件可以是独立的。在这种情况下,要求时间要根据两个参考事件来指定。这是实现工具和STA工具的功能,它们独立计算每个要求时间并满足每个要求。

9.2.3 Understanding Output Required Time

回顾图9.6中的电路,假设信号**在O1外需要的最小时间是3ns。**如果从电路单元内部到输出端口O1的延迟是"-3ns",那么在路径结束时最终延迟为0。所以新数据不会干扰之前的数据,因为时钟沿到来时新数据才有效。这样前一个数据要在O1上保持“-3ns”。这可以认为是下面的情况,O1是假定触发器的输入,它保持要求是“-3ns”,注意负值符号。这样,输出端口的最小延迟等于假定触发器上的保持检查,这里要检查的保持值是设定的负延迟值。
在这里插入图片描述

  • 类似地,假设对于信号O1最大要求时间是7ns,意思就是信号在被下一级触发器捕获之前还需要经过7ns。可以把它想成这种情况,O1是假设触发器的输入,其建立要求是7ns。假设时钟周期是10ns,组合云C1的最大延迟是3ns(即10ns-7ns)。

9.3 set_input_delay

set_input_delay [ -clock clock_name] 
 [ -clock_ fall ] 
 [ -level_sensitive ] 
 [ -rise ] 
 [ -fall ] 
 [ -max ] 
 [ -min ] 
 [ -add_delay ] 
 [ -network_latency_included ] 
 [ -source_latency_included ] 
 delay_value port_pin_list

9.3.1 Clock Specification

  • -clock选项用于指定参考时钟,根据参考时钟指定延迟时间。这个选项通常指的是触发输入端信号的时钟名称。
    在这里插入图片描述
  • 如果时钟周期是10ns,具有{0 5}波形,触发器F1是由时钟下降沿触发的,那么我们可以指定时钟下降沿的延迟是2, 或者指定时钟上升沿的延迟是7。关于时序分析,下面两个命令具有相同作用。
set_input_delay -clock CLK1 -clock_fall 2.0 [get_ports I1]
set_input_delay -clock CLK1 7.0 [get_ports I1]
  • 但是,如果发射触发器F1是由时钟下降沿触发的,那么我们应该使用第一个命令,**因为它可以很好地反映电路的设计。**如果输入引脚是组合电路唯一路径的一部分,那么就没有时钟触发到达输入引脚上的信号。这种情况下,就不需要指定-clock。对于set_input_delay命令,参考事件是时间0。

  • 如果没有指定-clock,那么-clock_fall也就没意义了。因为现在许多设计都是同步的,所以通常会使用set_input_delay指定时钟。组合路径(即使存在)也可以使用其他约束方法来约束(将在第13章讨论)。


9.3.2 -level_sensitive

  • 如果启动元器件不是一个触发器而是一个锁存器,那么就应该指定这个开关。从概念上讲,使用这个开关后启动锁存器可以借用这个周期里的时间。 这意味着建立裕度(setup slack)会减少——这考虑了当锁存器为透明时信号从锁存器开始的情况。

9.3.3 Rise/Fall Qualifiers—限定符

  • rise用于限定输入延迟与输入端口信号的上升沿对应。-fall用于限定输入延迟与输入端口信号的下降沿对应。如果在输入端口信号上升和下降时的输入到达时间不同,那么这个命令需要提供rise或者fall限定符。

  • 当不指定限定符rise或者fall时,给定值适用于这两种过渡。在CMOS电路中,上升和下降过渡时的路径延迟非常相似,所以不会经常使用-rise/-fall规格。


9.3.4 Min/Max Qualifiers

  • -min用于限定指定的延迟值与输入端口信号的最早到达时间对应。这个值用在当前设计内部以实现保持检查。
  • -max用于限定指定的延迟值与输人端口信号的最迟到达时间对应。这个值用在当前设计内部以实现建立检查。
  • 当没有指定-min或者-max限定符时,两个限定符使用相同的设定值。
  • 前随着纳米技术的发展,单个触发器的保持时间值大幅下降
    • 在大多数情况下,通过启动元器件的延迟(启动触发器的Clk_to_q延迟)和互连延迟(interconnect delay)将比保持时间长
    • 因此,大多数情况下外部到达信号能满足保持要求。通常,使用最大值可以可靠完成建立检查。这个值也用于保持检查。
    • If the signal is going to feed into an element which has a large hold requirement, say a memory, the hold check could become important. In such a situation, the -min value also should be specified correctly.

9.3.5 -add_delay

  • If an input delay is specified for a port, the current specification overrides prior specifi cations of input delay on this port.
  • 第一个延迟规格没必要指定-add_delay,加了工具也会忽略
  • Presence of -add_delay switch tells the tool that this is an additional constraint, besides the existing constraints, and it does not override the previous constraints. In the absence of this switch, the previous constraints get overwritten, for example:
#第一个规格
set_input_delay -clock CLK1 -min 3.0 [get ports Inl]

#这句正确,因为之前在这个端口上没有指定-max
set_input_delay -clock CLK1 -max 4.0 [get_ports lnl]

#这句履盖了前面关于CLK1的两个规格
set_input_delay -clock CLK2 3.5 [get_ports lnl]

#这一句使用add_delay,没有移除前面已经存在的约束
set_input_delay -clock CLKl -add_delay 3.0 [get_ports lnl]

#这句也正确,因为前面没有指定In2的输入延迟(input_delay)
set_input_delay -clock CLK3 4.0 [get_ports 1n2]

9.3.6 Clock Latency

  • 在第8章,我们发现在触发触发器以前,时钟在路径上会有延迟(时钟源延迟和网络延迟,source latency and network
    latency)
    。输入延迟值是关于时钟何时到达并触发触发器的,电路如图9.11所示。
    在这里插入图片描述
  • 延迟值D1是从F1的时钟端到B1的I1引脚之间的延迟。时序分析工具能够考虑从时钟源到F1引脚的时钟延迟,它基于为时钟指定的延迟。L1代表时钟源延迟,L2代表网络延迟。因此,时序分析工具会认为在时钟源的有效沿到达后,经过L1+L2,时钟沿到达F1,然后,经过set_input_delay规格中提到的延迟D1,信号会到达I1。
  • if the designer has already included the source latency or the network latency, in the specifi ed value, the switches source_latency_included and - network_latency_included need to be mentioned.
  • If L1 has been included, then the switch -source_latency_included needs to be specified.
  • If L2 has been included, then the switch -network_latency_included should be specified.
  • A user could specify none, either of or both of these switches, depending upon which portion of the clock path latency has been included.
  • 当指定这些开关时,时序分析工具不会考虑相应的延迟,而只是计算在启动触发器上的时钟到达时间,从而有效地使启动边沿提前。
  • These switches are usually not used because of the following reasons:
  • Different tools treat these switches differently.
  • Both the launching device (outside the block of interest) and the capture device (inside the block of interest) will have similar latencies on the clock path.
  • 从约束复用的角度来说,它最好不包括时钟源延迟和网络延迟。因为,这些延迟改变后,除了改变相关约束的延迟以外,我们还需要更新指定的输入延迟。

9.3.7 Completing Input Delay Constraints

  • 要完成输入约束,现在唯一剩下的工作就是需要指定输入延迟的实际端口或引脚,并且指定延迟值,这是set_input_delay命令必须指定的两个选项。

9.4 set_output_delay

set_output_delay [ -clock clock_name] 
 [ -clock_fall ] 
 [ -level_sensitive ] 
 [ -rise ] 
 [ -fall ] 
 [ -max ] 
 [ -min ] 
 [ -add_delay ] 
 [ -network_latency_included ] 
 [ -source_latency_included ] 
 delay_value port_pin_list

9.4.1 Clock Specification

  • -clock选项用于指定参考时钟
  • 获元器件是下降沿触发,那么需要指定-clock_fall。

9.4.2 -level_sensitive

  • If the capturing device is a latch , rather than a flop, -level_sensitive can be specified.
  • that the output port could be borrowing the time from the capturing latch. That means the setup slack could increase
  • this option should be used after a very careful consideration.

9.4.3 Rise/Fall Qualifiers

  • 如果输出端信号上升和下降时输出要求的时间不同,那么set_output_delay命令需要提供限定符rise或者fall。

9.4.4 Min/Max Qualifiers

  • The -min value is used for performing hold checks at the port/pin.
  • The -max is used for performing setup checks at the port/pin.
  • Like set_input_delay , even for set_output_delay , usually min delays are not very important. And the max values are specifi ed without min or max qualifi ers.

9.4.5 -add_delay

  • Like set_input_delay , if a user has to specify output delay with respect to multiple reference events on the same port, then -add_delay needs to be specified for all subsequent specifications.
  • 这条命令是额外约束,它不覆盖前面的约束。如未指定,则会覆盖。

9.4.6 Clock Latency

  • 如果设计者在指定值时已经包含了源延迟或网络延迟,那么需要使用-source_latency_included和-network_latency_included开关。
  • 时序分析工具在计算捕获触发器的时钟到达时间时就不会考虑相应的延迟了,因此,可以提前有效地获得捕获沿。
  • 使用set_output_delay时很少使用这些开关。

9.4.7 Completing Output Delay Constraints

  • 要完成输出约束,现在唯一剩下的工作就是需要指定输出延迟的端口或引脚,还要指定延迟值,它们是set_output_delay命令必须指定的选项。

9.5 Relationship Among Input and Output Delay

  • 思考图9.12所示的电路。信号从电路单元B1到B2。为了易于理解,我们假设:

    • 通过CI的延迟包括Clk_to_Q的延迟
    • 通过C2的延迟包括电路单元内部的互连延迟
    • 通过C3的延迟包括触发器F3的建立要求
  • 从F1到F3的路径上,需要指定电路单元B1输出端口O1的输出延迟,以及电路单元B2输入端口I1的输入延迟
    在这里插入图片描述

  • We have already seen that the data takes one cycle to reach from one register to another. That means the total delay through C1 , C2 , and C3 has to be less than or equal to one clock period (denoted by P ). Thus, C1+C2+C3<=P

  • O1的输出信号需要经过C2+C3后被F3可靠地捕获。所以set output delay(SOD)要大于或等于通过C2+C3的延迟。

    • SOD C2的延迟+C3的延迟
    • P-SOD表示在C1中允许的时间。 SOD越大,表明在C1中的时间越少。
  • I1的输入信号经过了C1+C2到达I1,那么set input delay(SID)要大于或等于通过C1+C2的延迟。

    • SID C1的延迟+C2的延迟
    • P-SID表示在C3中的允许时间。SID越大,表明在C3中的时间越少。
  • 如果SID+SOD>P+C2的延迟,那么表示设计过度约束


9.6 Example Timing Analysis

9.6.1 Input Delay: Max—最小大输入延迟

在这里插入图片描述
在这里插入图片描述


9.6.2 Input Delay: Min—最小输入延迟

在这里插入图片描述
在这里插入图片描述


  • 对于建立检查,要求数据必须在要求时间之前有效,因此裕度=数据要求时间-数据有效时间。对于保持检查,要求数据在要求时间之后有效,因此裕度=数据有效时间-数据要求时间。建立裕度和保持裕度的计算等式不同。

9.6.3 Output Delay: Max—最大输出延迟

在这里插入图片描述
在这里插入图片描述


9.6.4 Output Delay: Min—最小输出延迟

在这里插入图片描述
在这里插入图片描述


9.7 Negative Delays—负延迟

  • 最小延迟是负值使得能够严格遵守保持要求,而最大延迟是负值使得更容易满足建立要求。
  • 因为在通常情况下,通过元器件和互连的延迟比时钟网络的偏斜大,所以几乎没有最大延迟是负值的情况。虽然不常见,但是有时最小延迟会为负值(通过元器件和互连的延迟非常小)。

9.8 Conclusion

  • set_input_delay和set_output_delay需要正确设定,这样,经过电路单元的信号就可以保证时序正确了。如果设定不正确,那么单个电路单元可能能够满足自己的时序,而当集成整个设计时,最终的设计可能不会满足时序
  • 当指定端口约束时,新设计者常会犯这两个错误:
    • 当指定set_input_delay时,把采样时钟当作参考时钟,正确方法是把启动时钟作为参考时钟。
    • 当指定set_output_delay时,把启动时钟当作参考时钟,正确方法是把采样时钟作为参考时钟。
  • 在许多设计中,采样时钟和启动时钟可能相同,因此,这时可能没有关系。但是,如果两个时钟不相同,那么理解它们之间在概念上的不同就很重要了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/786269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【梦辛工作室】IF判断优化、责任链模式 IfChain

大家好哇&#xff0c;我是梦辛工作室的灵&#xff0c;在最近的开发中&#xff0c;有许多需要判断的分支处理&#xff0c;且处理内容较多且复杂&#xff0c;代码就容易越写越复杂&#xff0c;导致后期无法继续更新跌打&#xff0c;然后基于这个环境&#xff0c;我用责任链模式写…

热备盘激活失败导致raid5阵列崩溃的服务器数据恢复案例

服务器数据恢复环境&#xff1a; 一台Linux Redhat操作系统服务器上有一组由5块硬盘组建的raid5阵列&#xff0c;包含一块热备盘。上层部署一个OA系统和Oracle数据库。 服务器故障&#xff1a; raid5阵列中的1块磁盘离线&#xff0c;硬盘离线却没有激活热备盘&#xff0c;直到…

系统集成|第四章(笔记)

目录 第四章 项目管理一般知识4.1 项目与项目管理4.1.1 项目4.1.2 项目的组织4.1.3 项目生命周期4.1.4 典型的信息系统项目的生命周期模型4.1.5 单个项目管理过程 上篇&#xff1a;第三章、系统集成专业技术 第四章 项目管理一般知识 4.1 项目与项目管理 4.1.1 项目 定义&…

SQL注入实操二

文章目录 一、sqli-lab靶场1.轮子模式总结2.Less-21a.注入点判断b.轮子测试c.获取数据库名称d.获取表信息e.获取列信息f.获取表内数据 3.Less-22a.注入点判断b.轮子测试c.获取数据库名称d.获取表信息e.获取列信息f.获取表内数据 4.Less-23a.注入点判断b.轮子测试c.获取数据库名…

如何模拟实现分布式文件存储

如何解决海量数据存不下的问题 传统做法是是在宕机存储。但随着数据变多&#xff0c;会遇到存储瓶颈 单机纵向扩展&#xff1a;内存不够加内存&#xff0c;磁盘不够家磁盘。有上限限制&#xff0c;不能无限制加下去 多机横向扩展&#xff1a;采用多台机器存储&#xff0c;一…

vue+axios实现点击取消请求功能

代码片段 <template> <el-button type"primary" click"clickExportData">导出</el-button><el-dialog title"正在导出&#xff0c;请稍等" :visible.sync"progressShow" :close-on-click-modal"false"…

sql优化:为什么通常选用根据id查询而不是根据name?

先来看一个最常见的问题,下面两个sql语句哪个效率更高一些&#xff1f; select * from user where id 1; select * from user where name 张三 在没有给name加索引的时候&#xff0c;id是有主键索引的&#xff0c;也就是聚集索引&#xff0c;这样就是一个BTree结构&#xf…

成为一名数字IC后端工程师需要掌握哪些技能?(内附学习视频)

众所周知&#xff0c;数字后端设计是IC设计中必不可少的一个环节&#xff0c;数字后端工程师是将门级网表转换成标准的GDS文件&#xff0c;又称为设计实现或物理设计。正所谓前端保证功能正确&#xff0c;后端保证芯片的实现正确。 数字后端工程师是做什么的&#xff1f; 数字…

操作系统启动相关概念(BIOS、MBR、GPT、BRUB)

不管是 Windows 还是 Linux 操作系统&#xff0c;底层设备一般均为物理硬件&#xff0c;操作系统启动之前会对硬件进行检测&#xff0c;然后硬盘引导启动操作系统&#xff0c;如下为操作系统启动相关的各个概念。 一、BIOS 基本输入输出系统&#xff08;Basic Input Output Sy…

android studio(火烈鸟版本)使用protobuf

一、简介 Protobuf 全称&#xff1a;Protocol Buffers&#xff0c;是 Google 推出的一种与平台无关、语言无关、可扩展的轻便高效的序列化数据存储格式&#xff0c;类似于我们常用的 xml 和 json。 二、特点 Protobuf 用两个字总结&#xff1a;小&#xff0c;快。用 Protobu…

PS 裁剪工具及工具栏配置讲解

我们还是日常打开PS软件 首先 我们右侧菜单中右键 找到裁剪工具组 当我们选择裁剪工具时 图像边上会出现一个白色的框框 用法比较简单 我们可以鼠标拖住一个边 然后 往里拖动 将不要的东西剪掉 然后 鼠标双击 即可保存结果 然后 我这里撤回一下 这些部分还有用 还有一个…

安装nvm管理node

1.首先卸载已存在的node cmd输入node提示&#xff1a;‘node’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 2.安装nvm 安装地址 &#xff1a;Releases coreybutler/nvm-windows GitHub 本人选择1.1.7 输入nvm打印出了nvm的指令列表&#xff0c;说明…

【Nodejs】原生nodejs路由、获取参数、静态目录

1.路由 index.js // 启动服务 const server require(./server.js); //路由模块 const route require(./route.js); //api const apiRouter require(./api.js);server.use(route); server.use(apiRouter); server.start();server.js const http require(http);//创建一个大…

“解锁高效水资源管理:灌区管理系统一图详解“

平台概述 柳林灌区管理系统平台以物理灌区为单元、时空数据为底座、数学模型为核心、水利知识为驱动&#xff0c;对物理灌区全要素和建设运行全过程进行数字映射、智能模拟、前瞻预演&#xff0c;与物理灌区同步仿真运行、虚实交互、迭代优化&#xff0c;实现对物理灌区的实时…

ChatGPT和搜索引擎哪个更好用

目录 ChatGPT和搜索引擎的概念 ChatGPT和搜索引擎的作用 ChatGPT的作用 搜索引擎的作用 ChatGPT和搜索引擎哪个更好用 总结 ChatGPT和搜索引擎的概念 ChatGPT是一种基于对话的人工智能技术&#xff0c;而搜索引擎则是一种用于在互联网上查找和检索信息的工具。它们各自具…

脑电信号处理与特征提取——2.脑电的神经起源与测量(夏晓磊)

目录 二、脑电的神经起源与测量 2.1 脑电的神经起源 2.2 脑电的测量 二、脑电的神经起源与测量 2.1 脑电的神经起源 脑电起源于大脑皮层大量神经元的同步突触活动&#xff0c;主要贡献来自锥体细胞。 静息电位&#xff1a;内负外正&#xff0c;K内流。 动作电位&…

stm8s003_切换时钟流程分析、配置外部晶振(库函数调用)

1、stm8s003的时钟 复位后&#xff0c;默认使用内部高速时钟HSI&#xff08;16MHz&#xff09;的8分频&#xff0c;也就是2MHz. 代码开始运行&#xff0c;也就是运行到main函数&#xff0c;我们就可以修改时钟源为外部晶振。 2、切换时钟流程分析&#xff0c;参考官方应用手册…

联想拯救者Y9000X 2023 i9+32G+RTX4070,真香!

拯点新品&#xff01;i932GRTX4070,真香&#xff01; 联想拯救者Y9000X 2023搭载16英寸专业超竞屏&#xff0c;机身最薄处仅为17.6mm&#xff0c;轻盈即刻随行&#xff0c;让你开黑随时开始&#xff01; 高刷新率&#xff0c;高分辨率&#xff0c;广色域&#xff0c;高亮度。强…

如何有效跟踪你的计费时间?

对于自由职业者、小型企业和远程团队来说&#xff0c;时间跟踪是必需的。了解自己在单个项目或任务上投入了多少时间&#xff0c;可以帮助他们有效管理资源和优化工作流程。 然而&#xff0c;在向客户收费时&#xff0c;时间跟踪多了一层复杂性&#xff1a;不仅需要跟踪所花费…

【论文阅读】DEPIMPACT:反向传播系统依赖对攻击调查的影响(USENIX-2022)

Fang P, Gao P, Liu C, et al. Back-Propagating System Dependency Impact for Attack Investigation[C]//31st USENIX Security Symposium (USENIX Security 22). 2022: 2461-2478. 攻击调查、关键边、入口点 开源&#xff1a;GitHub - usenixsub/DepImpact 目录 1. 摘要2. 引…