当前位置: 首页 > news >正文

Design Complie实验,使用2007年Synopsy的Lab Guide

Design Complie实验,使用2007年Synopsy的Lab Guide

文章目录

  • Design Complie实验,使用2007年Synopsy的Lab Guide
    • 1 DC实验
      • 1.1 Setup and Synthesis Flow
        • Task 1 Update the setup file
        • Task 2 Invoke Design Vision
        • Task 3 Read the Design into DC Memory
        • Task 4 Explore Symbol and Schematic Views
        • Task 5 Explore the Mouse Functions
        • Task 6 Constrain TOP with a Script file
        • Task 7 Compile or Map to Vendor-Specific Gates
        • Task 8 Generate Reports and Analyze Timing
        • Task 9 Save the Optimized Design
        • Task 10 Remove Designs and Exit Design Vision
      • 1.2 Timing and Area Constraints
        • Task 1 Determine the Target Library’s Time Unit
        • Task 2 Create a Timing and Area Constraints File
        • Task 3 Apply Constraints and Validate
      • 1.3 Environmental Attributes
        • Constraint
        • Apply & Check
      • 1.4 More Constraint Considerations
        • Constraint
        • Apply & Check
        • Compile

1 DC实验

1.1 Setup and Synthesis Flow

Task 1 Update the setup file

为了观察.synopsys_dc.setup文件,需要查看隐藏文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cusoOroY-1680765318841)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401112904884.png)]

Task 2 Invoke Design Vision

通过design_vision开启DC。可以看到的是,link library为 * sc_max.db ,target_library为sc_max.db ,symbol library为sc.sdb ,也可以通过在DCprompt中输入printvar去查看不同的library
在这里插入图片描述

点开File->Setup其中的search path如下,确保syn,syn_ver,sim_ver路径正确

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXR1TkRy-1680765187277)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230330203619890.png)]

Task 3 Read the Design into DC Memory

DC可以开VHDL,Verilog,System Verilog RTL文件。这里读取/rtl/TOP.vhd文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kN7oue62-1680765187278)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230330204400685.png)]

之后File->Link Design->OK进行连接,同时对这个unmapped设计进行ddc保存,保存到unmapped文件夹

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pif56hEY-1680765187278)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230330204835701.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qmYG1oN3-1680765187279)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230330204852265.png)]

Task 4 Explore Symbol and Schematic Views

点击create symbol view,生成top的symbol,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1tHVDn7g-1680765187279)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230330205725407.png)]

同时可以点进去(或者点击图标create design schematic)查看不同子模块的rtl,这里有FSM,DECODE,COUNT三部分组成。但是因为还没有完成design,所以暂时看不到gate级的电路
在这里插入图片描述

Task 5 Explore the Mouse Functions

鼠标schematic中右键,fit窗口大小

Task 6 Constrain TOP with a Script file

生成TOP.con约束文件,在命令行里输入source TOP.con

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ik48jhL0-1680765187280)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230330212841352.png)]

Task 7 Compile or Map to Vendor-Specific Gates

为了编译design,需要在DC中输入compile,log输出如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oiPgTMEB-1680765187280)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230330213310698.png)]

其中area表示面积,Worst neg slack表示相对于其约束,设计中的关键路径或最坏路径有多少是违反的(实际的delay减去预期的delay)。total neg slack表示violating path slacks的总数。

compile结束后可以看到门级电路

在这里插入图片描述

Task 8 Generate Reports and Analyze Timing

在top的symbol下,输入rc(report constraint),这条语句被提前在.setup里面定义过了,他实现了下面的语句。

report_constraint -all_violators

同时也有rt(report timing),默认看的是关键路径上的。还有ra(area)

关键路径是指设计中从输入到输出经过的延时最长的逻辑路径。优化关键路径是一种提高设计工作速度的有效方法。一般地,从输入到输出的延时取决于信号所经过的延时最大路径,而与其他延时小的路径无关。在优化设计过程中关键路径法可以反复使用,直到不可能减少关键路径延时为止。EDA工具中综合器及设计分析器通常都提供关键路径的信息以便设计者改进设计,提高速度。

在这里插入图片描述

每一个path都有专属的slack,slack值可以是正,0或者负。某一个path拥有最坏的slack的话则称之为 critical path

critical path拥有最大的负slack值。若是所有的path都没有时序违规,则slack都是正数,此时最小的那个slack则是critical path。

可以查看endpoint slack historgram,点击create endpoint slack historgram

在这里插入图片描述

可以看到,critical path在I_COUNT处。图中红色为violating paths,绿色则为满足的约束
在这里插入图片描述

同时点slack里的名字,以及button,create pathschematic of selected logic,可以看到这个point

在这里插入图片描述

在这里插入图片描述

之后点中间的add paths to path schematic 可以看到在原理图里的path

在这里插入图片描述

Task 9 Save the Optimized Design

保存的是symbol,同时save as的时候要save all designs

在这里插入图片描述

同时也可以在history里保存command history

在这里插入图片描述

Task 10 Remove Designs and Exit Design Vision

fr:关闭所有designs窗口,也可以File->Remove All Designs

remove_design -designs

h:查看所有的commands

通过exit关闭DC.

通过下面可以重新加载log文件,需要提前把command.log复制册成lab2.log

design_vision -f lab2.log

1.2 Timing and Area Constraints

完成下面design的时序约束和面积约束。

在这里插入图片描述

Task 1 Determine the Target Library’s Time Unit

通过下面指令启动dc,并且read taget文件

dc_shell-tread_db <target_library_FILE>
list_libs

生成report文件

在这里插入图片描述

Task 2 Create a Timing and Area Constraints File

写时序约束和面积约束

time unit:1ns

要求如下
在这里插入图片描述

约束lab4.con如下

###################################
# Constraints file for lab4
###################################reset_design; #good first step#f=333.3MHz
create_clock -period 3 [get_ports clk] #clkgen->clock port 700ps
set_clock_latency -source -max 0.7 [get_ports clk]#clk port->all internal and external register clock pins is 300ps +/- 30ps,which means max0.33n and min0.27n.If not use -source,delay is applied to clk network latency
set_clock_latency -max 0.33 [get_ports clk]
set_clock_latency -min 0.27 [get_ports clk]#jitter +/-0.04n and margin 0.05n.Becauese it doesnot say setup or hold ,use default(include setup and hold)
set_clock_uncertainty 0.09 [get_ports clk]#worst rise/fall transition time of any clk pins 0.12n,use default(include fall and rise)
set_clock_transition 0.12 [get_ports clk]#assume a maximum setup time of 0.2n for any register in MY_DESIGN
#data1 and data2 2.2n delay through logic S. SO we have 3-(2.2+0.2)=0.6ns,where 3ns is Tclk ,2.2n is ports->S, 0.2n is Tsetup
set_input_delay -max 0.6 -clock clk [get_ports "data1 data2"]#F3->sel ports 1.4ns. So we have 3-1.4=1.6ns(to ports,not ff,dont have setup time)
set_input_delay -max 1.6 -clock clk [get_ports sel]##set output
#clk->out1=3-0.42-0.08=2.5,where 3n is Tclk,0.42n is combo logic at port out1,0.08n is F6 Tsetup
set_output_delay -clock clk -max 2.5 [get_ports out1]
#clk->out2=3-0.81=2.19,where 0.81n is internal delay
set_output_delay -clock clk -max 2.19 [get_ports out2]
#out3 has 0.4n Tsetup,3-0.4=2.6
set_output_delay -clock clk -max 2.6 [get_ports out3]##Combinational Logic,need virtual clk.But we only have cin1&cin2 -> cout delay is 2.45n<3n.So no need opt
#creat_clock -name Vclk -period 2#area
set_max_area 540

Check一下,无报错

在这里插入图片描述

Task 3 Apply Constraints and Validate

应用约束文件以及check

#apply
source scripts/lab4.con#check no missing or conflicting
check_timing#check design
report_clock
reprot_clock -skew
report_port -verbose#write con
write_script -out scripts/lab4.wscr

lab4的schematic如下

在这里插入图片描述

通过source lab4.con来约束

在这里插入图片描述

查看clock等信息

clk时钟周期3ns,report_clock

在这里插入图片描述

对于clk的一系列约束report_clock -skew
在这里插入图片描述

对于ports的报告,load都为0,线模型未定义。report_port -verbose(查看完整设置)
在这里插入图片描述

input delay,均和设置一致

在这里插入图片描述

output delay,均和设置一致

在这里插入图片描述

写出约束文件,以进行进一步检查 是否正确。

diff a b
在这里插入图片描述

在这里插入图片描述

之后,对原约束文件进行修改,当完全符合之后的代码如下

###################################
# Constraints file for lab4
###################################reset_design; #good first step#f=333.3MHz
#
create_clock -period 3 [get_ports clk] #clkgen->clock port 700ps
#
set_clock_latency -source -max 0.7 [get_clocks clk]#clk port->all internal and external register clock pins is 300ps +/- 30ps,where +-30 is 60ps uncertainty.If not use -source,delay is applied to clk network latency
#
set_clock_latency -max 0.3 [get_clocks clk]#jitter +0.04n(max) and margin 0.05n and +-30=60ps skew.Becauese it doesnot say setup or hold ,use default(include setup and hold)
#skew+jitter(max)+margin
#
set_clock_uncertainty -setup 0.15 [get_clocks clk]#worst rise/fall transition time of any clk pins 0.12n,use default(include fall and rise)
#
set_clock_transition 0.12 [get_ports clk]#assume a maximum setup time of 0.2n for any register in MY_DESIGN
#data1 and data2 2.2n delay through logic S. SO we have 3-(2.2+0.2+0.15)=0.45ns,where 3ns is Tclk ,2.2n is ports->S, 0.2n is Tsetup,0.15n is clock uncertainty
#
set_input_delay -max 0.45 -clock clk [get_ports "data1 data2"]#F3->sel ports 1.4ns. 
#The total clock insertion delay or latency to the external registers is 700p+300p=1n.So we have 1.4-1=0.4ns
#
set_input_delay -max 0.4 -clock clk [get_ports sel]##set output
#out1=0.42+0.08=0.5,where 0.42n is combo logic at port out1,0.08n is F6 Tsetup
#
set_output_delay -clock clk -max 0.5 [get_ports out1]
#out2=3-0.15-0.81=2.04,where 0.81n is internal delay,0.15n is clk uncertainty
#
set_output_delay -clock clk -max 2.04 [get_ports out2]
#out3 has 0.4n Tsetup
#
set_output_delay -clock clk -max 0.4 [get_ports out3]##The maximum delay through the combinational logic is 2.45ns.   This can be constrained by pretending that there are launching registers on the input ports Cin1 and Cin2 and capturing registers on the output port Cout, and applying corresponding input and output delays.   The sum of the external input and output delay values must be equal to the clock period minus the clock uncertainty minus the maximum combo delay = 3ns - 0.15ns - 2.45ns = 0.4ns.  This means that the input and output delay values can be 0.4 and 0.0, or 0.2 and 0.2, or 0.1 and 0.3, etc., respectively.
#
set_input_delay -max 0.3 -clock clk [get_ports Cin*]
set_output_delay -max 0.1 -clock clk [get_ports Cout]
#area
set_max_area 540

通过组合逻辑的最大延迟为2.45ns。这可以通过假设在输入端口Cin1和Cin2上有启动寄存器,在输出端口Cout上有捕获寄存器,并应用相应的输入和输出延迟来限制。外部输入输出延时值之和必须等于时钟周期减去时钟不确定性减去最大组合延时= 3ns - 0.15ns - 2.45ns = 0.4ns。这意味着输入和输出延迟值可以分别为0.4和0.0,或0.2和0.2,或0.1和0.3,等等。

再次重复检查操作。红框中上边为标准答案(<),下方为本地答案(>),此时已经修改完成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qFuD2BuT-1680765187286)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401154010407.png)]

这里注意get_clocks和get_ports的区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBnuPtPL-1680765187286)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401153350671.png)]

  • get_clocks:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-erT4UWam-1680765187286)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401154436219.png)]

  • get_ports:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-db8lst14-1680765187286)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401154526908.png)]

最后保存symbol ,save as ddc文件

1.3 Environmental Attributes

Constraint

环境属性的约束如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrZXKyrn-1680765187286)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401161636505.png)]

首先根据lab4.con继续往下写约束条件

设置线模型的时候,先把auto_wire_load_selection 设置成false,这时,如果没有声明model_name,那么wire load model就不会被用到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pvMY7wpX-1680765187287)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401165943990.png)]

Operating Conditons:

如何去看所有线负载模型的name

整体con文件

#ENVIRONMENTAL ATTRIBUTES 
#input ex clk & cin*
#
set_driving_cell -lib_cell bufbd1 -library cb13fs120_tsmc_max \[remove_from_collection [all_inputs] [get_ports "clk Cin*"]]#120ps max input transition
#
set_input_transition 0.12 [get_ports Cin*]#output
#ex cout
#
set_load [expr 2 * [load_of cb13fs120_tsmc_max/bufbd7/I]] [get_ports out*]# Cout drives 25fF,
#
set_load 0.025 [get_ports Cout*]# wireload model
# From the wireload model selection table, a design size between 200 and 
# 8000 area units uses the model called "8000"; The default wireload 
# mode in this library in "enclosed"
#
set auto_wire_load_selection false
set_wire_load_model -name 8000# operating condition use to scale cell and net delays.
#
set_operating_condition -max cb13fs120_tsmc_max

Apply & Check

之后apply并且check

#apply:
source scripts/lab6.con#check:
report_port -v
report_design

report_port -v

transition&input driving cell:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jc7XgkDG-1680765187287)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401174710049.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fmntdAEB-1680765187287)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401174504392.png)]

load:

在这里插入图片描述

report_design

使用的wire loading model为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V8ZVcozN-1680765187287)(./%E6%95%B0%E5%AD%97%E8%8A%AF%E7%89%87%E7%89%A9%E7%90%86%E8%AE%BE%E8%AE%A1%E4%B8%8EEDA%E5%B7%A5%E5%85%B7-%E9%92%9F%E5%A4%A9%E6%BA%90-2201210722.assets/image-20230401174843060.png)]

operating conditions为

在这里插入图片描述

进行对比显示的都是(<)即和答案一致。(这里仍然使用的是get_ports clk)

在这里插入图片描述

最后保存symbol ,save as ddc文件

1.4 More Constraint Considerations

Constraint

Design schematic如下

在这里插入图片描述

constraint要求如下:

在这里插入图片描述

clock spec:

rename clk->my_clk,同时修改文中-clock my_clk,这里只有-clock需要修改,但是对于get_ports而言或者get_clocks而言他仍然是clk

要修改他的占空比,首先看create_clock的语法以及参数,如下。需要着重关注的是-waveform edge_list参数

在这里插入图片描述

waveform的话,已经规定Tclk为3ns那么3*0.4=1.2ns,所以waveform{0 1.2},从0n开始上升,1.2n下降

在这里插入图片描述

Input ports delay:

关注set_input_delay,因为在次之前已经有对input_delay的constraint故额外的需要add_delay。同时sel信号在之前我们知道存在clk的latency。以及注意是相对于下降沿的delay

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

Output port delay:
在这里插入图片描述

输出的clk latency就只有network的了,因为从内部往外传的,同时也是相对clk的negtive.

external fanout:

set_port_fanout_number 用来设置port的fanout数目
在这里插入图片描述

set wire model重新对输出的design进行定义,而enclosed用的是set_wire_load_mode,有三种不同的mode

在这里插入图片描述

整体代码如下

# more constraint
# input port delay
# sel,with latency 700ps (source) + 300ps (network)
#
set_input_delay -max  1.02 -clock my_clk -add_delay -clock_fall -network_latency_included -
source_latency_included [get_ports sel]#output port delay
#only network latency ,clock fall,0.26-0.5=-0.24n
#
set_output_delay -max -0.24 -clock my_clk -clock_fall -add_delay -network_latency_included  [get_ports out1] #External fanout input
#each in port (ex clk)fans out to 2 other sub-blocks
#
set all_in_ex_clk [remove_from_collection [all_inputs] [get_ports clk]]#model external capacitive loading,2*3=6
#
set_load [expr 6 * [load_of cb13fs120_tsmc_max/bufbd1/I]] $all_in_ex_clk#model external fanout
#
set_port_fanout_number 2 $all_in_ex_clk#External fanout output
#driving 3 sub-blocks
#
set_port_fanout_number 3 [all_outputs]#wire load :sub-design
#wireload model->ForQA to sub-designs ARITH&COMBO
#use enclosed
#
set_wire_load_model -name ForQA [get_designs "ARITH COMBO"]
set_wire_load_mode enclosed#wire load :ports
#wlm(wire load model):"16000"
#
set_wire_load_model -name 16000 [all_inputs]
set_wire_load_model -name 16000 [all_outputs]

Apply & Check

source scripts/lab9.con进行apply

check_timing,可以看到一些变动的信息
在这里插入图片描述

report_clock,3ns周期,0n上升,1.2n下降,名称为my_clk

在这里插入图片描述

report_port -v查看port情况

compare:

design_vision>write_script -out scripts/lab9.wscr

unix>diff scripts/lab9.wscr .solutions/lab9A.wscr

在这里插入图片描述

Compile

design_vision>compile_ultra -scan -retime -timing

注:这一步会比较久,完成会提示优化完成

在这里插入图片描述

再看他的schematic如下,相较于lab2时刻的电路,变动很大

在这里插入图片描述

同时检查是否还存在violation

在这里插入图片描述

save as到ddc文件

相关文章:

Design Complie实验,使用2007年Synopsy的Lab Guide

Design Complie实验&#xff0c;使用2007年Synopsy的Lab Guide 文章目录Design Complie实验&#xff0c;使用2007年Synopsy的Lab Guide1 DC实验1.1 Setup and Synthesis FlowTask 1 Update the setup fileTask 2 Invoke Design VisionTask 3 Read the Design into DC MemoryTas…...

问题 B: C语言10.2

题目描述&#xff1a; 输入a、b、c三个整数&#xff0c;按先大后小的顺序输出a、b和c。注意请使用指针变量的方式进行比较和输出。 输入 三个用空格隔开的整数a、b和c。 输出 按先大后小的顺序输出a、b和c&#xff0c;用空格隔开。 请注意行尾输出换行。 样例输入 9 0 1…...

多线程控制并发数目工具类Semaphore

文章目录前言Semaphore原理Semaphore源码解析内部继承AQS保证同步acquire获取许可release释放许可实战演示总结前言 在多线程编码过程中&#xff0c;我们会用到多线程来提升运行效率。比如我们的Executors创建线程池&#xff0c;程序尽可能的压榨CPU资源来提升我们程序吞吐量。…...

Redis篇之五大数据类型

1、五大数据类型 4.1、String&#xff08;字符串&#xff09; String是Redis最基本的类型&#xff0c;你可以理解成与Memcached一模一样的类型&#xff0c;一个key对应一个value String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象…...

Linux->文件系统磁盘文件管理

目录 1 磁盘结构 2 逻辑抽象管理磁盘 2.1 逻辑抽象 2.2 管理磁盘 2.3 补充知识 3 软硬连接 1 磁盘结构 本篇的学习需要建立在大家在脑海中有一副磁盘的结构才能进行下去&#xff0c;所以我会以图解的方式为大家简单讲解一下&#xff0c;注&#xff1a;博主对这一部分并不是…...

echarts tooltip文字太长换行

tooltip文字太长换行&#xff0c;设置了宽度也没有换行&#xff0c;加上一句&#xff1a; extraCssText: ‘max-width:300px; white-space:pre-wrap’, 没加之前是这样&#xff1a; 加上之后 extraCssText: ‘max-width:300px; white-space:pre-wrap’, tooltip: {trigger: &…...

Docker 部署Jira8.1.0

Jira与Confluence一样&#xff0c;都需要用到独立的数据库&#xff0c;对于数据库的安装我们不做介绍&#xff0c;主要介绍如何用Docker部署Jira以及对Jira进行破解的操作。 1、数据库准备 关于数据库官方文档说明&#xff1a;https://confluence.atlassian.com/adminjiraserv…...

枚举、模拟法(蓝桥杯卡片、数的分解为例)

枚举和模拟算法是计算机领域常用的两种基本算法。枚举算法是一种通过列举所有可能的情况来解决问题的方法。模拟算法则是通过模拟真实场景来解决问题。 枚举、模拟法 枚举算法是指将问题分解为一系列离散的情况&#xff0c;通过枚举所有可能的情况&#xff0c;逐一检查每种情…...

DC-DC升压变换器直流隔离高压输出稳压电源模块5v12v24v48v转50v110v150v220v250v300v350v500v

HRB 系列隔离宽电压输入高电压稳压输出 特点 效率高达 80%以上1*1英寸标准封装单电压输出稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上应用 HRB 0.2~10W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#…...

jQuery创建、添加、删除元素

一、创建元素 语法&#xff1a; $("<li></li>"); 动态的创建了一个 <li> 二、添加元素 1. 内部添加 1、element.append(内容) 把内容放入匹配元素内部最后面&#xff0c;类似原生 appendChild。 2、element.prepend(内容) 把内容放入匹…...

产品快讯丨神策数据 A/B 测试试验指标管理重磅升级

神策数据&#xff1a;为了更好地帮助企业管理试验指标&#xff0c;神策数据 A/B 测试完善了指标类型、配置方式、计算原理等&#xff0c;帮助分析师、运营同学等明确计算逻辑&#xff0c;并最大程度减少歧义以及与技术同学沟通的成本&#xff0c;以实现企业内部信息的有效统一。…...

游戏开发之Unity2021URP项目场景的构建

地面的修改和编辑&#xff1a;地面插件的使用 打开包管理器&#xff0c;在左边的包那里选择“Unity注册表”&#xff0c;在右边进行搜索“Polybrush”&#xff0c;之后选择右下角的安装 安装完之后要选择样本中的URP进行导入&#xff0c;因为我们的项目是URP渲染管线的&#x…...

数学分析:多元微积分1

卓里奇的数学分析的好处在于直接从多元函数来入手多元微积分&#xff0c;引出矩阵&#xff0c;十分自然。 紧集的概念&#xff0c;感觉直接用闭集去理解就行&#xff0c;&#xff08;对于图形学来说&#xff09;。 多元函数的极限&#xff0c;其实和单元函数并没有什么区别。 这…...

STC32G 三轮车负压电磁

文章目录前言整车效果控制思路循迹环岛处理障碍处理关键代码部分差比和以及当前速度计算角速度环速度环环岛处理障碍处理前言 年后就没怎么碰车了&#xff0c;到3月中旬换三轮了&#xff0c;可算有一点成效了&#xff0c;做个记录。 整车效果 三轮负压电磁慢速元素识别控制思…...

【编程小记】位运算 x -x 表示含义

位运算 x & -x 表示含义一、原码反码补码二、位运算 x & -x 表示含义三、最终结论一、原码反码补码 在计算机中&#xff0c;整数的数据的存储是按照补码的方式进行存储的 按照数据与0的大小&#xff0c;数据又被分为正数与负数 正数的原码反码补码相同。负数的原码&…...

信创PC利旧管理新模式,麒麟信安助力国家某部委实现高效云办公

2022年&#xff0c;国家某部委所有桌面终端均已完成信创PC替换&#xff0c;并将日常办公所需的办公Office套件、OA无纸化办公系统、即时通讯系统等全部迁移至信创PC&#xff0c;但在进行生产业务系统迁移时&#xff0c;该单位信创PC仍存在业务系统与不同芯片PC难适配、应用难兼…...

【玩转RT-Thread】RT-Thread内核宏定义详解(rtdef.h)

文章目录1.RT-Thread版本信息2.RT-Thrad基础数据类型定义3.RT-Thread基本数据类型的范围4.RT-Thread系统滴答时钟最大计数值5.RT-Thread IPC数据类型范围6.RT-Thread避免未使用变量警告7.编译器相关定义8.编译器相关定义9.RT-Thread错误码定义1.RT-Thread版本信息 /* RT-Threa…...

PDF转化器免费版有哪些?这几款办公达人们都在用

在现代办公中&#xff0c;文件的排版和格式是非常重要的&#xff0c;无论是发布通知或提交策划书、投档简历或是发表论文、宣传海报或是产品说明书等&#xff0c;我们经常使用PDF文件格式发送给他人。然而&#xff0c;很多人需要对PDF进行编辑修改&#xff0c;通常会先将其转换…...

2022MathorCup赛题B

以下所有文字均基于作者的实际经验&#xff0c;并不具有完全的合理性&#xff0c;请谨慎参考 目录 一、问题分析 &#xff08;一&#xff09;问题一 &#xff08;二&#xff09;问题二 二、预处理 &#xff08;一&#xff09;训练集预处理 &#xff08;二&#xff09;测…...

适合销售使用的CRM系统特点

销售人员抱怨CRM系统太复杂&#xff0c;这是一个很重要的问题。毕竟&#xff0c;如果系统太难使用&#xff0c;会导致CRM实用率和效率下降&#xff0c;最终影响公司的运作。在这篇文章中&#xff0c;我们来探讨当销售抱怨crm客户系统太复杂了&#xff0c;企业该如何解决。 缺少…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解

文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...