Design Compiler —— Design Compliler中常用到的命令(示例)总结(十三)

2023-11-02

转载文章,来源出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner

============================================

本文将描述在Design Compliler中常用到的命令,这些命令按照流程的顺序进行嵌套讲解,主要是列举例子;大概的讲解布局如下所示:

                       

大概有11个部分,下面我们逐个部分进行(简单的)介绍的举例。

1、tcl的命令和结构

tcl的命令和结构请参照第二节的内容:

http://www.cnblogs.com/IClearner/p/6617207.html ,下面是简单的常用举例。

--> 设置变量命令: set PER 2.0

  显示变量命令: echo $PER  # Result: 2.0

--> 表达式操作:

    set MARG  0.95

    expr  $PER  *  $MARG

    # expr: *, /, +, >, <, =, <=, >=

    set PCI_PORTS  [get_ports  A]

    set PCLPORTS   [get_ports “Y??M Z*”]

 -->命令嵌套,显示命令中嵌套表达式命令:

    echo “Effctv P = [expr  $PERIOD * $MARGIN]”

    # Result with soft quotes: “Effctv P = 1.9”

等价于:

    echo {Effctv P = [expr $PERIOD * $MARGIN]}

    # Result with hard quotes:

    # “Effctv P = [expr $PERIOD * $MARGIN]”

-->tcl的注释行:# Tcl Comment line

    set COMMENT injine ; # Tel inline comment

-->设置tcl中的列表变量:

    set MY_DESIGNS “A.v  B.v  Top.v”

查看列表变量:

  foreach  DESIGN  $MY_DESIGNS {

    read_verilog  $DESIGN

    }

 

-->for循环:

  for  { set i 1}  { $i  < 10 }  { incr  i} {  

    read_verilog  BLOCK_$i.v

  }

 

 

2、获取帮助

-->在dc_shell 中能用的命令:

  pwd 、 cd 、 Is、history、 !l 、 !7 、 Ireport 、

  sh  <LINUX_command> :加上sh后,可以执行在linux中执行的命令,如sh  gvim  xxx.v  & (&是后台运行)、

  printenv、

  get_linux_variable  <LINUX_variable>

-->在dc_shell中寻求帮助:

  下面的这些man、printvar命令都只能在dc_shell中运行:

  help -verbose *clock :列出与*clock有关的选项

  create_clock -help :查看create_clock这个命令的简单用法

  man  create_clock :查看create_clock这个命令的详细信息

  printvar  Mibrary :查看 Mibrary这个变量的内容

  man target_library :查看target_library这个命令的详细信息

 

-->linux关联DC中的帮助,获取更多的帮助

  为了能够在linux中使用dc_shell中的man命令,或者说能在linux中查看某些dc的命令,可以使用关联(alias):

    $ alias  dcman “/usr/bin/man  -M  $SYNOPSYS/doc/syn/man”

  然后我们就可以使用dcman来参看dc中的命令了,例如:

    $dcman  targetjibrary

 

3、tcl语法的检查

当在DC可以执行tcl文件,在运行之前,我们要检查这个tcl文件是否有语法错误,可以使用下面的命令:

      $dcprocheck   xxx.tcl

 

4、设计对象的操作

关于设计对象的内容(比如上面是设计对象等),请查看前面的章节,这里我们只进行说对设计对象操作的一些命令(这些命令可以在dc_shell 中执行,或者写在tcl文件中)。

-->获取设计对象

  get_ports  、get_pins  、get_designs  、get_cells  、get_nets  、get_clocks  、get_nets  -of_objects  [get_pins  FF1_reg/Q] 、get_libs <lib_name> 、get_lib_cells  <lib_name/cell_names>  、get_lib_pins <lib_name/cell_name/pin_names>

 

-->设计对象(的集合):

设计对象的物集,总之就是多个设计对象(组成一个集合)

  all_inputs 、all_outputs  、all_clocks  、all_registers  、all_connected  、all_fanin  、all_fanout  、all_ideal_nets

 

 

-->对设计对象的操作:

  获取设计对象(get_ports pci_*)后赋予给变量PCI__PORTS:

    set  PCI__PORTS  [get_ports pci_*]

    echo $PCI__PORTS # -≫ _sel184

  查询设计对象:

    query_objects  $PCI__PORTS  # -> {pci_1 pci_2 ...}

  获取设计对象的名字:

    get_object_name  $PCIMPORTS # -> pci_1  pci_2 ...

  获取设计对象物集的大小:

    sizeof_collection  $PCI_PORTS   # -> 37

  往设计对象物集里面增加设计对象:

    set PCI_PORTS [add_to_collection  $PCI_PORTS  [get_ports CTRL*]]

  从设计对象物集里面减少设计对象:

    set ALL_INP_EXC_CLK  [remove_from_collection  [alljnputs] [get_ports CLK]]

  比较设计对象:

    compare_collections

  设计对象的索引:

    index_collection

  分类设计对象:

    sort_collection

 

  循环查看(进行遍历)设计对象物集的内容:

    foreach_in_collection  my_cells  [get_cells  -hier  *  -filter “is_hierarchical == true”] {

      echo “Instance [get_object_name $cell] is hierarchical”

    }

 

  过滤运算符:

    # Filtering operators: ==, !=, >, <, >=, <=, =~, h

    filter_collection [get_cells *]  “ref_name AN*”

    get_cells * -filter “dontjouch == true”

    get_clocks * -filter “period < 10”

 

  列出所有单元属性并将输出重定向到文件:

  # List all cell attributes and redirect output to a file

    redirect -file cell_attr {list_attributes -application -class cell}

 

  Grep以dont_为开头的单元属性文件:

  # Grep the file for cell attributes starting with dont_

    $grep dont_ cell__attr | more

 

  列出属性为dont_touch的单元名字:

    # List the value of the attribute dont_touch

    get_attribute  <cell_name> dont_touch

 

  识别当前设计集中的胶合单元(GLUE_CELLS):

  # Example: Identify glue cells in the current design 

    set GLUE_CELLS  [get_cells *-filter “is_hierarchicai == false”]

 

5、启动环境的配置

这些设置主要是在.synopsys_dc.setup文件中;或者在common_setup.tcl和dc_setup.tcl文件中,然后.synopsys_dc.setup文件把这两个文件包含。

·common_setup.tcl文件中:

    set   ADDITIONAL_SEARCH_PATH   “./libs/sc/LM   ./rtl ./scripts”

    set   TARGET_LIBRARY_FILES  sc_max.db

    set   ADDL_LINK_LIBRARY_FILES  IP_max.db

    set   SYMBOL_LIBRARY_FILES   sc.sdb

    set   MW_DESIGN_LIB  MY_DESIGN_LIB

    set   MW_REFERENCE_LIB_DIRS  “./libs/mw_lib/sc   ./libs/mw_libs/IP”

    set   TECH_FILE    ./Iibs/tech/cb13_6m.tf

    set   TLUPLUS_MAX__FILE   ./Iibs/tlup/cb13_6m_max.tluplus

    set    MAP FILE   ./Iibs/tlup/cb13_6m.map

·dc_setup.tcl文件中:

#库的设置:

    set_app_var   search_path   "$search_path  $ADDITIONAL_SEARCH_PATH"

    set_app_var   target_library   $TARGET_LIBRARY_FILES

    set_app_var   link_library    "*  $target_library  $ADDL_LINK_LIBRARY_FILES"

    set_app_var   symbol_library   $SYMBOL_LIBRARY_FILES

    set_app_var   mw_reference_library   $MW_REFERENCE_LIB_DIRS

    set_app_var   mw_design_library    $MW_DESIGN_LIB

    get_app_var   -list   -only_changed_vars   *

#如果存在Milkyway design库,那就不创建;否则创建Milkyway design库

  if {![file  isdirectory  $mw_design Jibrary ]} {

    create_mw_lib  -technology  $TECH_FILE  -mw_reference_library  $mw_reference_library  $mw_design_library

  }

  open_mw_lib  $mw_design_library

  check_library

  set_tlu_plus_tiles  -max_tluplus  $TLUPLUS_MAX_FILE  -tech2itf_map  $MAP_FILE

  check_tlu_plus_files

  history  keep  200

  set_app_var  alib_library_analysis_path   ../ ;  # ALIB files

  define_design_lib   WORK   -path   ./work

  set_svf    <myjilename.svf>

  set_app_var   sh_enable_page_mode   false

  suppress_message   {LINT-28   LINT-32   LINT-33   UID-401}

  set_app_var  alib_library_analysis_path   [get_unix_variable   HOME]

  alias  h   history

  alias  rc “report_constraint   -all_violators”

 

 

6、DC的启动方式(举例)

    $dc_shell   -topographical  #交互式启动

    dc_shell-topo>  start_gui   #启动图形化界面

    dc_sheli-topo>  stop_gui   #停止图形化界面

    $design_vision  -topographical  #启动图形化界面的同时,调用拓扑模式

    $dc_shell  -topo  -f dc.tcl  | tee -i dc.log  #批处理模式

 

 

7、读入设计

有下面这些读入情况:

    ·read_db library_file.db

    ·read_verilog  {A.v  B.v   TOP.v}

    ·read_sverilog  {A.sv  B.sv  TOP.sv}

    ·read_vhdl   {A.vhd  B.vhd  TOP.vhd}

    ·read_ddc   MY_TOP.ddc

    ·analyze  -format  verilog  {A.v  B.v  TOP.v}

      elaborate  MY_TOP  -parameters “A_WIDTH=8, B__WIDTH=16”

然后是读入设计后的一些必要操作:

  设置顶层设计:

    current_design   MY_T0P

  检查是否缺失子模块:

    link

  检查设计:

    if {[check_design] ==0} {

      echo “Check Design Error”

      exit  #检查出错,退出DC

    }

  写出读入后的未映射设计:

  write_file  -f  ddc  -hier  -out  unmappedd/TOP.ddc

 

8、(环境、设计、时序等的)检查和移除

      reset_design

      report_clock

      report_clock  -skew  -attr

      report_design

      report_port -verbose

      report_path_group

      report_timing

      report_timing_requirements  -ignored

      report_auto_ungroup

      report_interclock_relation

      check_timing

      reset_path  -from  FF1_reg

      remove_clock

      remove_clockJransition

      remove_clock_uncertainty

      remove_input_delay

      remove_output_delay

      remove_driving_cell

      list_libs

      redirect  -file  reports/lib.rpt {report_lib <libname>}

      report_hierarchy [-noleaf]

      # Arithmetic implementation and resource-sharing info

      report_resources

      # List area for all cells in the design

      report_cell  [get_cells  -hier  *]

      check_design

      check_design -html check_design.html

      sh firefox check_design.html

      report_constraint  -all_violators

      report_timing  [ -delay <max | min> ]

              [ -to <pi n_port_clockJ ist> ]

              [ -from <pin__port_clock_list> ]

              [ -through <pin_port_list> ]

              [ -group]

              [ -input__pins ]

              [ -max_paths <path_count> ]

              [ -nworst <paths_per_endpoint_count >]

              [ -nets ]

              [ -capacitance ]

              [ -significant_digits <number>]

      report_qor

      report_area

      report_congestion

 

9、约束的设置和执行

·预算估计:

如果实际输出负载值未知,则用于“负载预算”。找到库中最大的max_capacitance值,并将该值作为保守的输出负载。

    set LIB_NAME ssc_core_slow

    set MAX_CAP 0

    set OUTPUT_PINS [get_lib_pins  $LIB_NAME/*/* \

    -filter "direction == 2"]

    Foreach_in_collection  pin  $OUTPUT_PINS {

      set  NEW_CAP  [get_attribute  Spin  max_capacitance]

      if {$NEW_CAP > $MAX_CAP} {

        set MAX_CAP  $NEW_CAP

      }

     }

    set_load  $MAX _CAP  [all_outputs]

·普通的约束:

    reset_design

############# CLOCKS###################

# 默认情况下,每一个时钟都只对于一个时钟,除非设置下面的命令为真:

    set_app_var  timing_enable_multiple_clocks_per_reg  true

#下面是时钟建模的例子:

    create_clock -period 2 -name  Main_Clk [get_ports Clk1]

    create_clock -period 2.5 -waveform {0 1.5} [get_ports Clk2]

    create_clock -period 3.5 -name V_Clk; # 这是虚拟时钟

    create_generated_clock -name DIV2CLK -divide_by2  -source  [get_ports Clk1] [get_pins I_DIV__FF/Q]

    set_clock_uncertainty -setup 0.14 [get_clocks *]

    set_clock_uncertainty -setup 0.21 -from [get_clocks Main_Clk] -to [get_clocks Clk2]

    set_clock_latency -max 0.6 [get_clocks Main_Clk] ; # 这是版图之前的时钟情况

    set_propagated__clock  [all_clocks]; # 这是时钟树综合后的情况

    set_clock_latency  -source -max 0.3 [get_clocks Main_Clk]

    set_clock_transition  0.08  [get_clocks Main_Clk]

############# CLOCK TIMING EXCEPTIONS ########

    set_clock_group  -logically_exclusive | -physically_exclusive | -asynchronous  -group CLKA -group CLKB

    set_false_path -from [get_clocks Asynch_CLKA] -to [get_clocks Asynch_CLKB]

    set_multicycle_path -setup 4 -from -from A_reg -through U_Mult/Out -to B_reg

    set_multicycle_path -hold 3 -from -from A_reg -through U_Mult/Out -to B_reg

    set_input_delay -max 0.6 -clock Main_Clk [alljnputs]

    set_input_delay -max 0.3 -clock Clk2 -clock_fall -add_delay [get_ports “B  E”]

    set_input_delay  -max 0.5 -clock -network_latency_included V_Clk [get_ports “A  C  F”]

    set_output_delay -max 0.8 -clock -source_latency_included Main_Clk [all__outputs]

    set_output_delay -max 1.1 -clock V_Clk [get_ports “OUT2  OUT7]

################ ENVIRONMENT ######################

    set_max_capacitance 1.2 [alljnputs]; # (这是用户自定义的设计规则约束)

    set_load 0.080  [all_outputs]

    set_load [expr [load_of slow_proc/NAND2_3/A] * 4] [get_ports OUT3]

    set_load 0.12 [all_inputs]

    set_input_transition 0.12 [remove_from_collection [all_inputs][get_ports  B]]

    set_driving_cell -lib_cell FD1 -pin Q [get_ports B]

与物理设计有关的约束:

    create_bounds ...

    create_rp_groups...

    set_app_var placer_soft_keepout_channel_width...

    set_app_var placer_max_cell_density_threshold...

    set_congestion_options...

    setjgnoredjayers...

 

    set_aspect_ratio 0.5 # (高度和宽度的比值)

    set_utilization  0.7 #(利用率)

    set_placement_area  -coordinate  {0 0 600 400}

    create_die_area  -polygon { {0 0} {0 400} {200 400} {200 200} {400 200} {400 0} {0 0}}

    set_port_side {R} Port__N

    set_port_location -coordinate {0 40} PortA

    set_cell_location -coordinate {400 160} -fixed -orientation {N} RAM1

    create_placement_blockage -name Blockagel -coordinate {350 110 600 400}

    create_bounds -name “b1” -coordinate {100 100 200 200} INST_1

    create_site_row -coordinate {10,10} -kind CORE -space 5 -count 3 {SITE_ROW#123}

    create_voltage_area -name VA1 -coordinate {100 100 200 200} INST_1

    create_net__shape -type wire -net VSS -origin {0 0} -length 10 -width 2 -layer M1

    create_wiring_keepouts -name "my__keep1" -layer "METAL1" -coord {12 12 100 100}

    report_physical_constraints

    reset_physical_constraints

约束的执行:

    redirect -tee -file reports/precompile.rpt {source -echo -verbose TOP.con}

    redirect -append -tee -file reports/precompile.rpt {check_timing}

如果有直接的tcl约束,那么直接约束:

    source <Physical_Constraints_TCL_file>

如果没有的话,可以从物理设计中抽取:

    extract_physieal_constraints  <DEF_file>

    read_floorplan  <floorplan_cmd_file>  

 

 

10、综合优化

路径分组:

    group_path -name CLK1 -criticai_range <10% of CLK1 Period> -weight 5

    group_path -name CLK2 -critical_range <10% of CLK2 Period> -weight 2

    group_path -name INPUTS -from [alljnputs]

    group_path -name OUTPUTS -to [all_outputs]

    group_path -name COMBO -from [alljnputs] -to [all_outputs]

    set_fix_multiple_port_nets  -all  -buffer_constants

综合时的选项:

# Licenses required to take advantage of all Design Compiler optimization

# features: DC-Ultra, DesignWare, DC-Extension (for DC-Graphical), DFTC

# Enable multi-core optimization, if applicable:

    set_host_options  -max_cores <#>

    report_host__options

    remove_host_options

# 防止特定的子模块被 ungrouped:

    set_ungroup  <top_level_and/or_pipeiined_blocks>  false

# 防止DesignWare层次结构被 ungrouped:

    set_app_var  compile_ultra_ungroup_dw  false

# 如果需要:禁用特定子设计的边界优化:

    set_boundary_optimization  <cells or designs>  false

# 如果需要:从适应性重新定时中排除特定的单元/设计(-retime)(也就是放在某些模块或者设计的寄存器被retime移动):

    set_dont_retime  <cells_or_designs>  true

# 如果需要:通过手动控制寄存器复制的个数

  #最大扇出的情况:

    set_register_replication [-num_copies 3 | -max_fanout 40]   [get_cells  B_reg]

# 如果需要:更改寄存器复制命名样式:

    set_app_var  register_replication_naming_style  "%s_rep%d"

# 如果要求应用,那么就要为测试准备的综合选择扫描寄存器,并且禁止自动地移位寄存器定义:

    set_scan_configuration -style <multiplexed_flip_flop | clocked_scan | lssd | aux_clock_lssd>

    set_app_var compile_seqmap_identify_shift_registers false

# 如果有要求保持流水线中的寄存器器输出,就要进行约束:

    set_dont_retime   [get_cells  U_Pipeline/R12_reg*]  true

# 如果设计中包含有纯的流水线设计,那么可以进行寄存器retiming:

    set_optimize_registers  true  -design  My_Pipeline_Subdesign -clock CLK1 -delay_threshold <clock_period>

# 默认情况下,整个层次结构使用compile_ultra -spg进行拥塞优化,选择性地禁用/启用子设计上的拥塞优化:

    set_congestion_optimization  [get_designs A]  false

# 第一次编译:根据需要启用/禁用优化:

    compile_ultra -scan -retime -timing [-spg] \

            [-no_boundary] \

            [-no_autoungroup] \

            [-no_design_rule] \

                        [-no_seq_output_inversion]

#根据需要,更多地关注违规的关键路径:

 group_path -name <group_name> -from <path_start> -to <path_end>  -critical range <10% of max delay goal> -weight 5

# 执行增量编译:

    compile_ultra -scan -timing -retime -incremental [-spg]

 

11、综合后处理

    set_app_var verilogout_no_tri true

    change_names -rule verilog -hier

    write_file - f verilog -hier -out mapped/TOP.v

    write__file - f ddc -hier -out mapped/TOP.ddc

    write_sdc TOP.sdc

    write_scan_def -out TOP_scan.def

 最后附上两张流程图:

    

       

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Design Compiler —— Design Compliler中常用到的命令(示例)总结(十三) 的相关文章

  • [春秋云镜]CVE-2022-22733

    声明 中所涉及的技术 思路和 具仅供以安全为 的的学习交流使 任何 不得将其 于 法 途以及盈利等 的 否则后果 承担 所有渗透都需获取授权 靶场介绍 Apache ShardingSphere ElasticJob UI由于返回 toke
  • Kali 2020.1版本 更新不能解析域名问题解决

    Kali 2020 1版本 更新不能解析域名问题解决 问题阐述 解决方法 1 添加DNS解析服务器的ip地址 2 重启 3 kali联网即可更新
  • IC工程师入门必学《Verilog超详细教程》(附下载)

    Verilog HDL 简称 Verilog 是一种硬件描述语言 用于数字电路的系统设计 可对算法级 门级 开关级等多种抽象设计层次进行建模 Verilog 继承了 C 语言的多种操作符和结构 与另一种硬件描述语言 VHDL 相比 语法不是
  • 用U盘给虚拟机装系统——U深度

    下载一个u深度 将要安装的系统镜像放进 重装系统 创建虚拟机 按shift 修改位如下所示 按fn f10确认 选择第二个 进行磁盘分区 开始装机 完成后关机并把启动时间修改回去 如果拔出U盘后出现以下情况 把新添加的硬盘移除即可
  • 北京的三甲医院都是定点医院吗?不列入医保卡范围不能报销?

    北京有19家三甲医院看病 用医保卡实时报销 其他的三甲医院需要在蓝本上定点后 才能报销 1 中国医学科学院北京协和医院 2 首都医科大学附属北京同仁医院 3 首都医科大学宣武医院 4 首都医科大学附属北京友谊医院 5 北京大学第一医院 6
  • 不错的在线视频下载软件

    发现了一款非常好的下载在线视频软件 而且可以跨浏览器使用 它几乎支持所有的web浏览器 如IE Chrome Firefox Opera Safari等浏览器 支持Youtube Youku Ku6 6间房 凤凰卫视视频网等在线视频网站的视
  • 破解世界数学难题!GPT-4 得出P≠NP

    Datawhale干货 编辑 陈萍 来源 机器之心 这是对 LLM for Science 一次有希望的探索 对于身处科研领域的人来说 或多或少的都听到过 P NP 问题 该问题被克雷数学研究所收录在千禧年大奖难题中 里面有七大难题 大家熟
  • 一些关于CV和deeplearning的干货链接(长期更新)

    目录 yolo系列汇总 关于batch normalization的理解 各类归一化方法的总结及代码 YJango的卷积神经网络介绍 目标检测SSD讲解 关于AP PR曲线计算的理解 内附代码 生肉 英文 解释了yolov3的forward
  • vue2与vue3有什么区别?

    今天要说的vue3基本兼容我们所熟悉的vue2代码 一 两者基本的不同点 1 vue3固然是优点多多的 其3个主要的优点有 1 按需引用 2 组合式api 更加接近原生js 更加直观 3 vue3新增的set up中没有this 也就是说v
  • Android之OpenGL学习

    1 前言 本来一直就想做音视频开发这方面 包括我的毕业论文也是 可惜却太久没有接触有些陌生 遂写文章来复习 在这里有几个目标需要订下 第一个就是需要实现相机使用OpenGL ES进行渲染 第二个就是搞定实现一些初步的滤镜 第三个就是了解视频
  • 软件测试 中静态测试与动态测试的区别

    1 测试部分的不同 静态测试是指测试不运行的部分 只是检查和审阅 如规范测试 软件模型测试 文档测试等 动态测试是通常意义上的测试 也就是运行和使用软件 2 测试方式不同 静态测试 通过评审文档 阅读代码等方式测试软件称为静态测试 通过运行
  • python数字类型分为三类_Python | 数据类型

    Python让Python成为语言研究的利器Xu YangPhoneticSan学习参考 Python for Linguists Natural Language Processing with Python Introducing Py
  • 小白学加速乐的理解

    本来是想学下树美的 感觉太难了 就开始了学习加速乐的进程 网上文章挺多的 到了自己就整不起走 对大佬来说可能就是一些小知识点 无需挂齿 今天我把自己的理解做个小记录 1 2 打开抓包后 打开浏览器开发者工具 在debugger就断着了 大胆
  • 硬件电路点点滴滴“女屌逆袭”2---晶体三极管(1)

    一 晶体管基础知识 晶体管分2种 NPN PNP 晶体管通常封装为TO 92 下面是元件实物图 和 元件符合 NPN 当电压和电流被加到基极上时 NPN晶体管 其工作原理 就像水龙头 给控制开关一点压力 它就放出水来 同样给基极一定电压和电
  • PCL (再探)点云配准精度评价指标——均方根误差

    目录 一 算法原理 二 代码实现 三 代码解析 四 备注 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 算法原理 见 点云配准精度评价指标 均方根误差 PCL 点云配准精度评价 点到
  • 【技术分享】搭建java项目引入外部依赖教程

    文章目录 引言 如何在linux中编译运行java程序 IDEA中新建一个简单的java工程项目并运行 IDEA中如何引入外部依赖并运行 maven引入log4j jar包 手工引入log4j jar包 如何使用命令行的方式添加外部依赖 如
  • 2021-01-07 库存锁定问题

    前言 今天同事突然问我 要是一个商品我直接下单所有库存 那么是不是要等到订单取消后另一个人才可以下单 我思考了下 确实是需要限制一下 下面是我参考的方案 方案 下单锁库存 支付锁库存 通过淘宝测试 n件以内下单是下单锁库存 n件以上是支付锁
  • 2021年华数杯数学建模A题电动汽车无线充电优化匹配研究求解全过程文档及程序

    2021年华数杯数学建模 A 题 电动汽车无线充电优化匹配研究 原题再现 电动汽车以环境污染小 噪音低 能源利用效率高 维修方便等优势深受消费者青睐 但现有电动汽车的有线充电方式操作复杂 且存在安全隐患 因此采用无线充电方式对电动汽车进行快

随机推荐

  • 算法——最小生成树与最短路径相关算法

    最小生成树算法 普利姆算法代码参考 https blog csdn net tingting256 article details 50471033 具体如何判断是否构成回路 举例说明 克鲁斯卡尔算法代码参考 https blog csdn
  • ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() ora.l

    小白随手记录改bug过程 if G nodes node source print type G nodes node 开始的代码 报错如标题 分析应该是将一个值与多个值或一个列表中的值相比较 匹配的原因 source是一个列表有多个值 遂
  • 华为OD题目: 预订酒店

    预订酒店 预订酒店 题目 放暑假了 小明决定到某旅游景点游玩 他在网上搜索到了各种价位的酒店 长度为 的数组 A 他的心理价位是X元 请都他篇先出k 个最接近x 元的酒店 n gt k gt 0 并由低到高打印酒店的价格 输入 第一行 n
  • 关于R实现多重插补及其可视化

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 进行多重插补 二 多重插补结果可视化 三 结果评估与结果选择 前言 接着对前文数据集进行多重插补来填补缺失值 利用的是mice包中的airquality数
  • VC++ 程序启动即隐藏

    所谓的隐藏是程序启动后不显示主窗体 网上介绍了很多方法 是否达到效果 众说纷纭 这里只介绍一种在项目中实际应用到的切实可行的方法 这里假设主窗体为CMainDialog 1 变量声明 BOOL m bShowWindow 2 给变量赋初始值
  • 爬虫python能做什么-Python除了能做爬虫之外还能做什么?

    原标题 Python除了能做爬虫之外还能做什么 1 web开发python拥有非常完善的与web服务器进行交互的库 以及大量的免费的前端网页模板 更具优势的是 有非常优秀且成熟的Django Web框架 功能一应俱全 请输入图片描述 2 l
  • Linux-交叉编译-linuxptp

    参考文档 https blog csdn net BUPTOctopus article details 86246335 Linux PTP官网介绍 http linuxptp sourceforge net 1 LinuxPTP源码下载
  • 这30个CSS选择器,你必须熟记(上)

    关注前端达人 与你共同进步 CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计 我们能轻而易举的改变颜色 布局 制作出漂亮的影音效果等等 我们只需要改几行代码 不需要借助任何软件 就能轻而易举的实现 感觉就像魔法师一般 几秒钟就能得
  • 多线程并行 Dijkstra与A*算法结合实践

    多线程并行 Dijkstra与A 算法融合 1 Dijkstra总能找到最优解 但是时间消耗大 本文实现了多线程并行的搜索算法 使得路径搜素时间缩短约1 3 2 H作为传入参数可以使得本算法可以切换为A 也可以变为Dijkstra 3 本算
  • 冒泡法对10个数升序排序

    include
  • 智能合约编写之Solidity的编程攻略|FISCO BCOS超话区块链专场(篇5)

    前 言 作为一名搬砖多年的资深码农 刚开始接触Solidity便感觉无从下手 昂贵的计算和存储资源 简陋的语法特性 令人抓狂的debug体验 近乎贫瘠的类库支持 一言不合就插入汇编语句 让人不禁怀疑 这都已经过了9012年了 居然还有这种反
  • 在这么“内卷”的时期,作为转行python两年的人,想给学python的提个醒....

    近日 顶级互联网外企 PayPal 的秋招要求引发了技术界热议 其官方招聘公众号上显示 本次校招仅面向硕士和博士 消息一出 不少程序员都震惊了 现在已经这么卷了吗 只要硕士 其实 不仅是PayPal 许多世界级外企如微软 Intel在招聘时
  • 移动端Loading的两种方式--RN

    方式一 1 先封装一个 Loading 组件 import React from react import StyleSheet View ActivityIndicator from react native const Loading
  • python pip换源、更新

    pip临时使用 pip install i https pypi tuna tsinghua edu cn simple some package pip更新 使用镜像源更新 pip install pip U pip install i
  • FILE结构体与fd文件标识符

    FILE结构体 我们通常对文件进行操作时 都会使用一些与文件相关的函数 比如 打开文件 FILE fopen const char path const char mode 关闭文件 int fclose FILEE fp 读文件 size
  • Java实战03之idea pringboot 整合log4j2日志,可以多日志文件

    目录 前言 一 先添加pom xml 依赖 二 log4j2 xml 配置 三 application yml 四 加几条测试日志 五 采用注解 log4j2 1 log4j2 xml 配置 2 测试类 编辑 启动项目 编辑 六 打印多个不
  • Python并发编程——多线程thread,多进程process,多协程coroutine的区别与选择

    目录 1 IO Bound与CPU Bound 2 多进程 多线程 多协程的对比 3 如何进行选择 1 IO Bound与CPU Bound IO Bound IO Bound指的是程序的运行效率受计算机IO能力的限制 在程序的运行过程中
  • Java 进程

    目录 什么是进程 操作系统 进程控制块 PCB PCB中的一些属性 pid 进程id 内存指针 文件描述符表 状态 优先级 记账信息 上下文 并行 并发 CPU分配 进程调度 内存分配 内存管理 进程间是如何通信的 什么是进程 如图 当我们
  • Flink CDC 2.2 正式发布,新增功能概述

    一 Flink CDC 2 2 概览经过3个多月的紧张开发 在社区开发者们的共同努力下 Flink CDC 2 2 版本正式发布了 Release Release 2 2 0 ververica flink cdc connectors G
  • Design Compiler —— Design Compliler中常用到的命令(示例)总结(十三)

    转载文章 来源出处 http www cnblogs com IClearner 作者 IC learner 本文将描述在Design Compliler中常用到的命令 这些命令按照流程的顺序进行嵌套讲解 主要是列举例子 大概的讲解布局如下