精华内容
下载资源
问答
  • 验证中的形式验证

    千次阅读 2018-06-07 17:52:40
    什么是形式验证  形式验证是使用基于数学变换的静态分析来确定硬件或软件行为的正确性的技术集合的总体术语,与动态验证技术(如软件仿真)对比。   随着设计规模的增加和仿真时间的增加,验证团队一直在寻找...

    什么是形式验证

     形式验证是使用基于数学变换的静态分析来确定硬件或软件行为的正确性的技术集合的总体术语,与动态验证技术(如软件仿真)对比。 

     随着设计规模的增加和仿真时间的增加,验证团队一直在寻找方法来减少将系统验证到可接受的覆盖范围所需的向量数量。形式验证可能非常快,因为它不必评估每个可能的状态,以证明给定的逻辑在所有条件下都满足一组属性。但是,其性能在很大程度上取决于它所部署的逻辑类型以及它的应用方式。

     诸如片上网络的安全问题和通信问题(例如死锁)已经鼓励用户以更集中的方式采用形式验证。例如,由Jasper Design Automation创建的安全应用程序等形式验证工具可以检查逻辑中潜在的路径,这可能会比使用仿真更有效且安全。在集中形式验证的情况下,供应商使用针对特定类型问题的脚本将多个数学算法打包在一起。

     等价性检查

     一些类型的形式验证在设计中已经很普遍。等价性检查已用了十多年时间,以检查设计的RTL和门级网表描述是否代表相同的设计。等价性检查是针对超出门级仿真工具有效容量的较大设计问题而引入的,并迅速接管硬件加速解决方案以及软件门级仿真器。对于用户而言,等价性检查技术相对易于使用,如Synopsys的Formality等工具。

     由于使用了非常大的器件以及比较模拟与硬件的时间,考虑到FPGA提供的内部可视性有限,等效性检查已经超越了SoC RTL设计,因此迁移到FPGA设计中。通过Calypto Design Systems的SLEC等工具,等价检查也用于检查模块的ESL和RTL描述的功能等同性。

     系统级的使用正在整个SoC行业稳步推进。例如,英特尔使用一种等价性检查来验证缓存一致性协议与其定义的RTL实现是否一致,该协议本身已经基于更复杂的形式验证,使用形式化技术进行了正确性测试:模型检查。

     模型检查

     模型检查形式验证的部署比较复杂,因为它不仅依赖于用户生成的断言,而且还依赖于为给定问题选择正确的算法。早期的形式化验证工具也遇到了困难,因为解决方案主要基于早期等价性检查工具中使用的相同二元决策图(BDD),因此很快就会耗尽内存。它改变了乘法器可以表示的方式,使得验证它们的工作正式易于处理。

     其他类型的逻辑和数据通路给BDD带来了问题,导致形式化验证方法的普及,从而减慢了采用速度。用户不仅需要成为专家,还需要形式验证理论才能为每项工作选择合适的工具。 EDA公司通过在他们的工具中建立更好的启发式方法作出反应,试图识别逻辑类型,然后选择最适合的工作。容量仍然是形式验证技术的一个问题,所以仍然主要集中在模块级或协议验证上。然而,开发用于帮助形式验证进入主流的技术现在被广泛用于基于仿真的验证。

     最初,形式验证工具需要数学描述来提供证明。即使对于具有基本理论经验的人来说,这些也很难组合在一起。计算机和EDA行业的反应是开发可以用硬件工程师熟悉的术语来描述所需行为的语言,但可以由工具将其内部转换为数学描述。

     属性规范语言(PSL)的开发 - 最初由IBM作为Sugar语言 - 为形式验证工具提供断言,但PSL支持的断言类型现在被广泛用于仿真。设计人员在他们的代码中插入断言,告诉用户应该如何使用模块并测试违反这些条件的情况。例如,断言可以在不超过十个时钟周期之后检查确认信号是否跟随请求。尽管断言的语法呈现出学习曲线,但它们比数学表达式更易于处理。  

     SoC级别的形式验证

     由于形式验证尚未形成可以测试SoC整个行为的形式,因此需要将其用作更广泛的验证策略的一部分,该验证策略将包括硬件模拟以及最有可能用于大型设计的软件仿真。覆盖率管理是将形式化验证集成到更广泛的流程中的一种有效机制,因为通过选择适当的覆盖点,可以将仿真所需向量从已经通过形式验证技术进行了有效测试的逻辑部分引导出来。

     相反,由现有软件和固件驱动的仿真和仿真结果可以概括出设计中需要更加彻底地运用的部分设计,有可能通过形式验证的技术。在将多用途形式工具整合到他们的投资组合中后,主要供应商已经开发出了越来越善于支持这些程序的环境和方法。例如,Cadence设计系统公司和Mentor Graphics公司已经将形式验证技术构建到Incisive和Questa各自的验证环境中。

     在某些情况下,形式和动态技术被纳入到一个工具中。 Synopsys的Magellan就是一个例子,它将形式验证引擎与VCS仿真器相结合。 Magellan背后的想法是发现深埋在流水线内的错误,因此需要很多周期来触发使用仿真。 

     形式验证越来越多地被用于支持IP核的获取以及SoC集成期间的特定任务。这些应用程序是模块化形式化验证的例子,其中工具是从核心形式算法构建而成,并与针对特定目的进行调整的脚本或集成到软件工具中的脚本相结合。

     重点形式验证

     时钟域跨越(CDC)是一个日益重要的领域的好例子。 CDC与我们在一起已经很长时间了,但是现在的SoC时钟的发展已经从第三阶段升级到第一阶段。有几个时钟的设计可能已经在仿真中解决; 但是更复杂的时钟会花费数百人着手在此,最好在这方面得到验证。

     X传播是形式化技术的另一个应用,也是关于仿真的问题的一个很好的例子。更复杂的设计会抛出更多未知的状态,这可能会导致错误识别或错过错误。

     形式验证的这种有针对性的用途具有重要优点 

     它解决了验证和设计工程师高度重视的领域(许多模块都是为两者设计的)。

     由于它针对的是更具体的领域,因此对其捕获相关错误的能力有更大的信心 - 在成功部署这些模块后迅速建立起来的信心。

     它隐藏了大量支持形式验证的技术复杂性,因此用户在技术本身中不需要甚至是半专家就可以。

     这些因素结合起来,增强了对形式验证在整体层面上运作能力的信心,从而促进了其更广泛的应用。

     来自三大供应商的主要支持来自2014年春季,当时Cadence设计系统公司达成收购Jasper Design Automation的协议。Jasper是最积极地关注具体问题战略的公司,在JasperGold品牌下构建了一系列形式验证“应用程序”。除X传播检查外,各个应用程序还会检查其他事项:片上连接性;在低功耗设计中通常遇到的问题;以及最近潜在问题的逻辑路径,这些潜在问题的逻辑路径可能会危及SoC部分的安全属性,这些属性意味着受到保护。

     

    展开全文
  • 形式验证Formality

    千次阅读 2019-06-30 00:06:40
    形式验证Formality Formality形式验证是一个基于数学意义的验证方法,通过比较两个设计A,B: 如果A的逻辑功能被B包含,那么形式验证认为是通过的。 需要注意的是并不是说着两个design是完全相等的,而是逻辑上具有...

    形式验证Formality
    Formality形式验证是一个基于数学意义的验证方法,通过比较两个设计A,B:
    如果A的逻辑功能被B包含,那么形式验证认为是通过的。
    需要注意的是并不是说着两个design是完全相等的,而是逻辑上具有包含的关系。
    在IC的流程中通常用于进行不同流程步骤的netlist的比较:
    逻辑综合netlist,floorplannetlist,placement netlist ,CTSinserted netlist,P&R netlist,在每一个步骤后都有新的逻辑加入到netlist中,但是这个新的逻辑的加入不能改变之前netlist的功能。
    在dynamicsimulation的流程中,需要开发验证pattern作为输入来进行验证,验证的覆盖率取决于pattern的开发的完备性;而formality是基于数学比较的,不需要任何的输入pattern。因此相比于动态仿真的优势在于:
    不需要开发验证pattern
    速度比较快
    覆盖率100%
    纯逻辑上的验证,不考虑物理和timing信息
    缺点在于:
    由于不考虑timing,因此需要配合STA工具使用。
    在这里插入图片描述
    Equivalence checkers: 逻辑等价性检查,检查两个design是否是逻辑上相等的。
    Model checkers:检查design是否满足某些逻辑属性比如assert断言。

    少年不被楼层误,余生不羁尽自由。
    加油,加油

    展开全文
  • 形式验证——学习笔记

    千次阅读 2020-08-30 21:08:21
    形式验证简介 通过纯数学方法分析两个网表的逻辑是否完全等价 一种静态比较,会遍历所有的组合保证逻辑等价性,不需要动态激励 比仿真可靠性高!!!仿真覆盖率低,且后仿非常慢。 常用工具: Synopsys: ...

    形式验证简介

    • 通过纯数学方法分析两个网表的逻辑是否完全等价
    • 一种静态比较,会遍历所有的组合保证逻辑等价性,不需要动态激励
    • 比仿真可靠性高!!!仿真覆盖率低,且后仿非常慢。

    常用工具:

    • Synopsys: Formality
    • Candence: LEC

    形式验证在设计流程中的位置:
    在这里插入图片描述
    1、在综合后:保证综合过程没有出错,逻辑正确
    2、后端布局布线后:使用综合网表和和布局布线后网表进行比较(上图位置不正确,不用再STA后)

    形式验证的应用

    1、综合的网表与RTL对比做形式验证。保证综合过程没有逻辑错误。保证综合后的网表是想要的。

    2、后端网表与综合后的网表对比做形式验证。保证后端没有引入逻辑错误。(后端做完就可以做形式验证,不一定要等到静态时序分析做完)

    3、做ECO的时候,ECO后的网表与ECO后的RTL做形式验证。(ECO当芯片已经流片出去了,工厂只做了一个底层,但金属层还没做可以做metalECO,发现某些容易修的bug后可以利用一些冗余的cell改变某些连线来修掉这个Bug,修改后端网表的同时对RTL也进行相应修改,然后将这两个文件进行LEC比较)

    LEC所需要的文件

    • 需要比对的两个文件,一个是标准的golden,一个是待比对的revised。

    • 各种库文件的verilog model

    • 约束文件:black box (IP)和pin constraint等

    • 所用的工具——LEC(或者Formality)

    LEC输出的文件

    • 比较的结果报告

    • 保留结果的session文件

    形式验证LEC的流程以及分步骤讲解

    在这里插入图片描述
    流程

    • setup mode:
      建立基本环境
      读入设计
      设置参数
    • LEC mode
      映射golden以及revised所有比较点
      比较设计
      检查结果

    所有的命令都有使用mode的限制

    LEC比较流程

    • 关键是所有的mapping point要一一对应映射

    • Mapping point主要有:
      输入输出primary inputs/primary outputs
      DFF
      Latch
      Black box
      Tie-z cell
      Cut point
      (后面两种比较少碰到,中间任何的组合逻辑都不是mapping point,只会比较输出和触发器)cut point是手动设置的两个点)
      示例:
      在这里插入图片描述
      比如3个触发器,经过一个组合逻辑驱动下一个触发器;首先LEC会确认RTL和网表中是否都又存在这些寄存器,然后3个触发器的输入有8种可能,最后再RTL和网表种遍历这些结果,看是否对应。

    如何寻求帮助

    • man lec-command -v
    • help lec_command
    • LEC reference file/user guide

    LEC命令行的两种模式

    • vpxmode:默认启动模式。运行效率较高。命令不同部分之间是空格。如:read library …大小写不敏感 用空格隔开。
    • Tclmode:传统模式。命令由不同部分直接由下划线连接。例如:read_library…(用的较少)
    • Tclmode大小写敏感。
      在这里插入图片描述

    1、设置LEC环境

    • 设置环境变量,如顶层的名字
    • 创建目录结构,RPT等文件夹
    • 设置一些自定义命令等
    • add alias new_name original_command

    2、读取库文件

    • 读取所有相关标准单元库的verilog model文件
    • 使用read library 命令读取verilog model。如果有多个verilog model需要一次性读入。
      例如:read library -both -verilog std_model.v std_mode2.v

    3、读取设计文件

    • LEC把两个网表分别称为golden和revised。一般以RTL的作为golden。
    • read design -systemverilog -golden -sensitive(是不是大小写敏感) -root $working_design -file flist_rtl.f
    • read design -systemverilog -revised -sensitive -root $working_design -file syn.v

    4、设置约束文件

    • 主要是对特定的一些pin给予约束,如RST设置成无效值,scan mode设置成无效值等,scan mode=0代表是功能模式。
    • 设置比较的参数,比较的方法。如按照名字映射还是按照功能映射。默认第一顺序都是按照名字映射。
      可以手动设置下mapping point

    5、LEC compare

    • 进入LEC mode (set system mode LEC)
    • 再次对没有map上的点做映射,并比较golden和revised中所有的mapping point

    6、检查LEC结果

    检查是否有没有mapping的点****一般有两种情况会导致unmap

    • extra unmap:只在其中一个design里有
    • Unreachable: 定义了reg但是没用到,这些point与PO直接没有路径

    RTL中的mapping point与NET中的 mapping point一样多,且一一映射。(理想情况)

    实际RTL多一些,多余的往往是RTL冗余的点造成的,这种情况是extra unmap。代码冗余不会有实际的问题。冗余的代码没有通路输出到PO就是unreachable。

    检查所有mapping的点是否都是逻辑等价的

    • Equivalent
    • Inverted-equivalent(反相等价)
    • Sequential-merge(写了两段代码功能上比较接近,工具就会把这两段代码融合到一起,比如第一段代码有20个触发器,有5个是冗余的,最后会把它合并成15个,以减小面积)
    • Non-Equivalent
    • Abort (工具比较不出来)

    前面三个都是表示相等
    相反相位相等,最后到了端口上还是一一对应的。designer关心的应该是端口的输出结果。前面四个碰到的比较多,最后的比较少。

    • report mapped points
    • report unmapped points
    • report compare data
    • report black box
      图形化界面可以打开电路,更有利于Debug

    7、保存结果

    • 保存数据文件: save session my.session
    • 恢复之前保存的数据文件 :restore session my.session

    LEC实操

    LEC启动方式

    • 普通启动方式:lec -gxl (图像化界面)(用的更多)
    • 纯命令行启动方式:lec -nogui -gxl
    • 启动并运行写好的脚本:lec -gxl -dofile top_lec.tcl
    • 打开或者关闭图形化界面:set gui on/off

    流水线加法器形式验证

    在这里插入图片描述

    在这里插入图片描述

    top_lec.do

    
      set log file  ./top_lec.log -replace
      dofile ./script/set_env.do
    
      reset
    
      read library -Both -sensitive -Verilog /home/XXX/fab/synopsys90nm_lib/stdcel/verilog/saed90nm.v
    
      read design -systemverilog -Golden -sensitive  -root $working_design -file ./source_file/flist.f
      read design -systemverilog -Revised  -sensitive  -root $working_design ./source_file/syn.v
    
    
    set flatten model  -seq_merge -seq_constant  -SEQ_Redundant
    set datapath option -auto -verbose
    set analyze option -auto
    
    // add renaming rule a2 \[ _  -golden -type DFF
    // add renaming rule a1 ] _  -golden -type DFF
    set flatten model -seq_constant
    set flatten model -latch_transparent
    // 
    add pin constraints 0 RST  -Both
    
    // add pin constraints 0 SCAN_MODE_REG[0] -module scan_ctrl -Both
    
    
    dofile ./script/lec_black_box.do
    
    // would map the invert phase
    set mapping method -phase
    
    set system mode lec 
    
    // add mapped points top/a/b top/a/d  -noinvert
    // analyze setup
    analyze setup
    remodel -seq_const -repeat
    set mapping method -name first -phase -UNREACH
    map key points
    
    add compared points -all
    
    compare > $RPT_OUT/lec_$working_design.log
    
    report compare data > $RPT_OUT/lec_verbose_$working_design.log
    report mapped points > $RPT_OUT/lec_mapped_points.rpt
    report unmapped points > $RPT_OUT/lec_unmapped_points.rpt
    
    report black box -class Full -Both -Instance -Hier -Hidden > $RPT_OUT/lec_black_box.rpt
    report statistics > $RPT_OUT/lec_statistics.rpt
    
    save session my.session
    
    

    set_env.do

    
    setenv file_version     cp_test
    setenv working_design   plus_pipe
    
    setenv source_file      source_file
    
    setenv RPT_DIR RPT
    setenv OUT_DIR OUT
    
    setenv RPT_OUT  $RPT_DIR/$file_version
    
    //$::env(RPT)
    tclmode
    if {[file exist RPT]} {
        echo "RPT already exist"
    } else {
        system mkdir RPT
    } 
    vpxmode
    
    // system mkdir ./RPT -f
    system rm    ./RPT/$file_version -rf
    system mkdir ./RPT/$file_version
    

    补充:
    formality软件使用教程

    展开全文
  • Formality形式验证教程

    千次阅读 2020-08-24 08:37:46
    Formality形式验证主要验证综合后,生成的网表文件功能和之前的verilog文件功能是否一致, 需要两个文件,一个verilog文件,一个是网表文件 1.新建一个文件夹,把verilog文件和网表文件放入文件夹下,在此路径,打开...

    Formality形式验证主要验证综合后,生成的网表文件功能和之前的verilog文件功能是否一致,

    需要两个文件,一个verilog文件,一个是网表文件

    1.新建一个文件夹,把verilog文件和网表文件放入文件夹下,在此路径,打开linux下输入命令窗口,输入fm,则打开Formality软件

    2. 切换到Ref界面下,导入verilog文件

    3,设置路径,点击Options

     

    4.  点击Browse,添加DC综合软件安装的根路径,如我的是/opt/Synopsys/Synplify2015/

    5.点击VCS Style Options,然后在Library Directory(-y)下添加verilog的文件路径

     

     然后在Library Extension(+libext)下,写入verilog文件名,添加进去

     

    然后加载

    设置顶层文件

    在ImpI.下添加网表文件,再加载

    加入DB文件,文件在DC综合时添加库的路径下

     

     然后加载

    设置顶层文件

    然后,设置环境(Setup)

    在这一步主要设置常量,比如对应一些增加了SCAN扫描链和JTAG链的设置,

    由于fir.v是源代码,fir.vg只是综合的源代码,没有添加SACN和JTAG,故省略这一步

     

    Match

    Verify

     

    展开全文
  • 前仿后仿与形式验证

    千次阅读 2020-01-09 20:54:10
    Modelsim仿真方法 前仿真和后仿真的区别 一定要看!!!! ... 前仿针对RTL的功能验证, 后仿针对是综合后(加入了约束,单元延时等信息)的网标文件, ...形式验证,... 形式验证是一种综合性的验证...
  • 智能合约和形式验证

    千次阅读 2018-03-10 00:00:00
    今天我想来谈谈一个相关的话题:以太坊式的智能合约的形式验证。有些人声称要实现基于“深度学习”的,自动的智能合约形式验证(formal verification),用于确保合约的正确性。然而今天我要告诉你的是,跟自动编程...
  • 数字系统设计中形式验证

    千次阅读 2017-08-09 22:54:29
    可以用形式验证来检查综合结果是否正确(将RTL级的设计与门级网表比较)、插扫描链前后的网表是否一致、布局前后网表是否一致、插时钟树前后的网表是否一致、布线前后的网表是否一致。如下图所示。   通常在综合...
  • formality形式验证里的案件分析

    千次阅读 2020-03-07 21:33:51
    在当前的形式验证的领域,主要有两个工具,一个就是Cadence的conformal,另外一个就是Synopsys的formality(以下简称FM)。 通常情况下,形式验证的工具的主战场,是在RTLvsSYN这个阶段,主要是由于综合器的mapping/...
  • 形式验证进阶(二):Setup阶段的约束信息&说说formality中比较点匹配 2018-10-26芯司机公众号:chipdriver 之前的文章导读 《形式验证入门之基本概念和流程》 《形式验证进阶(一):Guidance&Load ...
  • 什么是形式验证

    千次阅读 2016-10-30 02:08:00
    在当前复杂的数字设计开发过程中,功能验证十分重要。虽然硬件的复杂度仍遵循摩尔定律持续增长,但是验证的复杂性更具挑战。事实上,随着硬件复杂性随时间呈双指数增长,验证复杂性理论上也呈指数增长。验证已被公认...
  • 关于最佳的验证方法,最近总能在各种文章中看到。这里希望以一些新的视角来看待这些问题。所以根据一些EDA公司代表对相关问题的回答,总结出本文。   受邀回答问题的代表有:Steve Bailey,Mentor Graphics公司...
  • 形式验证调研报告

    千次阅读 2018-10-17 14:56:24
    形式验证调研报告 王立敏 中国科学院信息工程研究所 第五实验室 北京 中国100093 摘要2018年初,Spectre和Meltdown漏洞的发现,使得芯片安全备受重视。然而传统的基于仿真的芯片验证方法由于测试样例覆盖不完全...
  • 总共包括synopsys若干讲芯片相关知识。... 芯片验证方法学近十年的发展极大的帮助到了验证工作效率和质量的提升,但是基于传统激励机制的...近几年越来越多的工程师把眼光投向了形式验证,对比探讨两种方法学的异同。
  • 形式验证技术

    千次阅读 2014-10-13 21:46:50
    形式验证就是基于已建立的形式化规格,对所规格系统的相关特性进行分析和验证,以评判系统是否满足期望的特性。形式验证并不能完全确保系统的性能正确无误,但是可以最大限度地理解和分析系统,并尽可能地发现...
  • 智能合约形式验证

    千次阅读 2018-06-19 10:59:19
    参考: 智能合约的形式验证方法 以太坊用形式验证提高智能合约的安全性 伦敦金融科技公司Aesthetic Integration为基于区块链智能合约推出形式验证平台...
  • 形式化方法一般可分为形式化规范说明Formal Specification,和形式验证Formal Verification。 Formal Formal Specification 形式化规范说明 Formal Verification 形式验证 Theorem Proving 定理检测/Deductive...
  • 关于软件形式验证

    万次阅读 2018-05-29 09:37:01
    形式验证是用逻辑来验证程序的可靠性,就是把一段程序用逻辑的方法证明一遍,证明它能得到预期的结果,没有bug。一般这类研究主要应用于昂贵的航天器材的操作系统、危险的医疗设备的程序之中。因为航天器材、医疗...
  • JS 验证Guid形式

    千次阅读 2018-10-29 09:47:19
    //验证Guid形式 function TestGuid(testID) { var reg = new RegExp("[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}"); if (reg.test(testID)) { return true; ...
  • Formality形式验证脚本范本

    千次阅读 2017-05-19 16:59:12
    1、验证带DFT网表:首先要disable scan logic和Bist功能 2、可以将所有的代码、网表,包括所有的子模块、顶层的全部读入,在read过程中针对top使用set_top,有关环境设置不急于读入,完成后,可以保存该阶段性为*....
  • 形式验证,英文是formal verification,是验证软硬件逻辑很重要的一种方法。特别是对于芯片开发、高安全性的系统开发来说,是非常必要。这主要是因为系统失败的代价很高,传统的测试也无法验证整个系统的安全性和...
  • DAO、Parity、BEC 等著名项目的市值几乎一夜归零,都是由于智能合约漏洞引起,智能...形式验证如何保障合约安全? VaaS 平台的作用及优势? 实际案例展示。 关键词:智能合约,形式验证,VaaS 平台,安全漏洞。...
  • IC验证方法基础

    千次阅读 2019-10-29 11:12:39
    形式验证(Formal Verification)是一种IC设计的验证方法,它的主要思想是通过使用数学证明的方式来验证一个设计的功能是否正确。 形式验证可以分为三大类: 等价性检查(Equivalence Checking)、 形式模型检查...
  • OS形式化设计与验证

    2014-08-23 11:13:04
    OS往往无法提供理想的安全服务和安全保障。这主要存在两方面的原因,首先在OS实现过程中OS开发者不可避免地存在编程错误、实现与设计...形式化方法是指使用基于数学逻辑和各种推理验证的技术来描述、开发以及验证软件...
  • 形式验证(Formal verification)让我们可以确保某种错误的状态不会发生。现在已经有很多对以太坊虚拟机语义模型的学术研究以及对使用不同框架的智能合约进行的形式验证。在这篇文章中,我会描述一种基于符号...
  • STA静态时序分析/Formality形式验证

    千次阅读 2018-04-25 14:09:17
    转载自http://blog.sina.com.cn/s/blog_a55a710c0102vcwm.html1. 静态时序...两种验证手段相辅相成,确保验证工作高效、可靠地完成。时序分析的主要作用是查看FPGA内部逻辑和布线的延时,确保其是否满足设计者的...
  • elementUI实现数组表单验证 <el-form :model="couponForm" ref="couponForm" label-width="200px"> <el-form-item v-for="(item,idx) in couponForm.actIdList" :label="'活动期间第' + (idx + 1) + '次...
  • 项目中用到url的验证,一直没有比较好的正则表达式,翻遍了谷歌终于找到一个比较完美的正则验证,在github上找到的,原地址原正则去除了对一些私有地址的验证,如(192.168开头的),下面是去除了这个限制的正则 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 542,508
精华内容 217,003
关键字:

形式验证