当前位置:网站首页>[quickstart to Digital IC Validation] 20. Basic syntax for system verilog Learning 7 (Coverage Driven... Including practical exercises)
[quickstart to Digital IC Validation] 20. Basic syntax for system verilog Learning 7 (Coverage Driven... Including practical exercises)
2022-07-07 15:26:00 【Lugant TCC】
Guide de lecture:L'auteur a eu le privilège d'être à l'avant - garde du domaine de l'information électronique en Chine“University of Electronic Science and Technology”Pendant les études supérieures,En contact avec le FrontNombreICValidation des connaissances,J'ai entendu des choses commeHuawei haisi、Tsinghua Purple light、Mediated Science and TechnologyCours en personne pour les principales entreprises de l'industrie liées aux circuits intégrés,Pour les chiffresICVérifier qu'il y a une certaine accumulation de connaissances et d'expériences d'apprentissage.Pour vous aider à démarrer le Front EndICAmis validés,Après avoir réfléchi un, deux,En particulier cette colonne,Dans l'espoir de prendre le plus de temps possible,Prenez le moins de virages possible,Le plus apprisICValidation des connaissances techniques.
Catalogue des articles
- Un.、Aperçu du contenu
- 2.、Technologie de vérification fondée sur la couverture
- Trois、Modèle de couverture fonctionnelle
- Quatre、Convergence de la couverture fonctionnelle
- Cinq、Données de couverture fonctionnelle
- Six、Normalisation et analyse des données de couverture fonctionnelle
- Sept、Type de couverture:RTLCouverture du Code
- Huit、Type de couverture:Couverture des assertions
- Neuf、Type de couverture:Couverture fonctionnelle
- Neuf、Type de couverture:Couverture fonctionnelle VS Couverture du Code
- Dix、Stratégie de validation fondée sur la couverture
- Onze、Couverture et défauts(Bug rate)La relation entre
- Douze、Définir un modèle de couverture fonctionnelle
- XIII.、Modélisation de la couverture fonctionnelle
- XIV.、Rapport de couverture fonctionnelle
- Quinze.、Événements d'échantillonnage pour la couverture fonctionnelle
- 16.、Couverture fonctionnelle:DéclencheurSystemVerilog Assertion
- XVII.、 Définir les points de couverture : Signaux et expressions
- Dix - huit.、 Définir les points de couverture :bins
- XIX.、 Définir les points de couverture :Couverture conditionnelle
- Vingt.、 Définir les points de couverture : Superposition du saut d'état
- Vingt et un.、 Définir les points de couverture : Couverture croisée
- Vingt - deux.、 Couverture paramétrique : Fournir la réutilisation du Code
- Vingt - trois.、covergroupComplément opérationnel(2021-10-15)
- Vingt - quatre.、Résumé
- X、Exercices pratiques
Un.、Aperçu du contenu
- Basé surFacteurs de couverture Technologie de validation pour
- Type de couverture:Couverture du Code(Outils générés automatiquement,Objectif) Et la couverture fonctionnelle ( Définir artificiellement les points de couverture ,Subjectivité)
- SV Couverture fonctionnelle en Modélisation
- Définir un modèle de couverture:
covergroup - Définir les points de couverture :
coverpoint - Couvrir les points
bins - Fonction de couverture
Facteurs de couverture Peut être utilisé pour mesurer nos progrès de validation ,En bref,, Regarde ce qu'on a fait après une demi - journée . Le plus important, bien sûr, est de nous assurer que nous vérifions l'exhaustivité , Tous les points que nous pouvons identifier doivent être vérifiés .Ce qui doit être clarifié, Couverture requise , On ne peut pas dire que la validation est réelle. OKC'est, En fait, l'espace de validation est encore très grand , C'est juste que nos risques sont réduits , On ne peut pas dire qu'il n'y a aucun risque. !Donc..., La validation est parfois quelque chose que nous faisons de notre mieux .
2.、Technologie de vérification fondée sur la couverture
- La couverture est juste RTLConceptionFonction Pourcentage de couverture atteint après validation (Données quantitatives)
- Le processus d'inspection doit satisfaire aux exigences suivantes: IntégritéAvecExactitude, Pas de travail redondant
- Pour réduire au minimum la charge de travail de validation , Utiliser la couverture pour mesurer les fonctions testées d'une conception , Quelles fonctions n'ont pas été testées
- La couverture fonctionnelle est assurée par L'ingénieur de validation définit lui - même De, Utilisé pour mesurer si les spécifications de conception sont correctement mises en œuvre , Le contenu spécifique se reflète dans Plan de validation Moyenne
- Couverture fonctionnelle utilisée pour vérifier la conception Scénario d'application、Conditions limites、Variables spécialesOuConditions de conception Si elle a été entièrement testée ou confirmée
Trois、Modèle de couverture fonctionnelle
Définir un modèle de couverture
- Rédiger un modèle de couverture pour mesurer si les objectifs du plan de validation sont atteints
- Le modèle de couverture fonctionnelle ne peut pas être obtenu automatiquement à partir de la conception
- Le modèle de couverture fonctionnelle est défini par L'ingénieur de validation définit lui - même , Vérifier que l'intention de conception et les fonctions de conception sont correctement mises en œuvre dans un environnement de validation
- Selon Spécifications de conception et plan de vérification , Vérifier que l'Ingénieur doit définir ce qui doit être écrasé ( Testé ou vérifié )
Étapes
- Définir le signal échantillonné (coverage group)
- Définir le temps d'échantillonnage
Quatre、Convergence de la couverture fonctionnelle
- Convergence de la couverture
- Quelles stratégies et quels comportements adopter , Pour atteindre la couverture 100%
- La couverture fonctionnelle est utilisée pour mesurer les attributs de conception couverts par le cas d'essai. (design feathures)
- La convergence de couverture est une boucle de rétroaction , Utilisé pour analyser les résultats de la couverture et atteindre 100% Plan d'essai pour la détermination de la couverture
- Utiliser différentes graines(seed) Exécuter les tests existants où
- Nouvelles contraintes(new constraints)
- Quelles stratégies et quels comportements adopter , Pour atteindre la couverture 100%

Cinq、Données de couverture fonctionnelle
- Collecte de données sur la couverture
- Exécuter le même cas d'essai avec plus d'une graine
- Vérifier le cas d'essai (case)Fonctionnement correct(pass/fail)
- Seulement si le cas d'essai (case) Lorsque les résultats de la simulation sont corrects , Les données de couverture fonctionnelle sont valides
- CauseRTLDans la conceptionbug Lorsque les résultats de la simulation sont incorrects , Données de couverture fonctionnelle invalides ,Doit être jeté
- Couverture analytique

- Recueillir la couverture du Code dans la conception , Collecte de la couverture fonctionnelle lors de la validation
- La couverture de la collecte est RetourProcessus!
Six、Normalisation et analyse des données de couverture fonctionnelle
- Collecte de la base de données sur la couverture ,Et la normalisation
- Utiliser différentes graines, Exécution répétée de la plate - forme de validation aléatoire et des cas d'essai
- Normaliser les résultats de la couverture fonctionnelle pour tous les cas d'essai , Utilisé pour mesurer les progrès de la validation
- Analyser les données de couverture , Confirmer la modification des cas d'essai
- Si les données de couverture obtenues restent stables , Différents cas d'essai de semences sont nécessaires et le temps d'exécution des cas d'essai est prolongé.
- Si la couverture augmente Doucement.,Augmentation nécessaireContraintes Obtenir des incitations plus efficaces
- Si vous rencontrez un goulot d'étranglement , ..Besoin de créer plus de cas d'essai direct ,Respect des conditions limites
- Lorsque la couverture fonctionnelle approche 100%Heure,Inspection requisebugProbabilité d'apparition,Sibug On le trouve souvent , Description une partie du dessin ou modèle n'est pas entièrement couverte .Si ça n'arrive pasbug, Description vérification de la conception terminée .
Sept、Type de couverture:RTLCouverture du Code
Note:: La couverture des codes est une condition objective , C'est - à - dire que la dimension de style de code regarde la couverture , La couverture du Code est facile et nécessaire ( Ou peut - être pas, mais peut - être expliquer )Respect des exigences100%.
- Couverture du Code
- Mesurer les spécifications de conception couvertes par la validation des cas d'essai RTLDans la réalisation de, Au lieu de mesurer le plan de validation
- D'accord(
Line Coverage):RTLLignes de code dans - Machine à l'état fini(
FSM Coverage):RTL État de la machine à l'état fini dans le Code et transition entre les états - Chemin(
Path Coverage):RTL Branche de chemin dans le Code (if-elseDéclarations) - Inversion du signal (
Toggle Coverage):RTL Un signal dans le Code provient de 0Passer à1,Et de1Passer à0 - Que le mentor (
Expression Coverage):RTL Expression conditionnelle dans le Code ,Par exempleif(a & b & c)
- D'accord(
- Mesurer les spécifications de conception couvertes par la validation des cas d'essai RTLDans la réalisation de, Au lieu de mesurer le plan de validation
Huit、Type de couverture:Couverture des assertions
Note:: Couverture fonctionnelle plus à vérifier LogiqueFonction, Impossible de voir si les informations de synchronisation sont correctes , Donc il y a une couverture d'assertion !
- Assertion Coverage Couverture des assertions
- Une affirmation est un code déclaratif ,Pour inspectionRTLDans le CodeEntre les signauxDe(Séries chronologiques)Relations
- Les affirmations peuvent être utilisées Processus Code ou utilisation
SystemVerilog Assertions - L'assertion peut vérifier la valeur du signal ou l'état de la conception
cover propertyDéclarations
Neuf、Type de couverture:Couverture fonctionnelle
- Est lié à l'intention de conception
- La couverture fonctionnelle dépend du plan de validation !

Neuf、Type de couverture:Couverture fonctionnelle VS Couverture du Code
- 100% La couverture du Code ne signifie pas 100% Couverture fonctionnelle de !

Dix、Stratégie de validation fondée sur la couverture
- Collecte d'informations plutôt que de données
- On ne peut mesurer que ce qui est utilisé
- Mesurer l'intégrité

Onze、Couverture et défauts(Bug rate)La relation entre
- Bug Probabilité d'apparition
- Bug rate C'est le nouveau RTL Probabilité de détection d'un défaut fonctionnel , La couverture peut être mesurée indirectement
- Bug rate Au fur et à mesure que le projet et la validation progressent

Douze、Définir un modèle de couverture fonctionnelle
- covergroup
- Spécification du modèle de couverture de l'emballage
- ChaquecovergroupContient ce qui suit
- Un événement d'horloge , Pour synchroniser les points de couverture de l'échantillonnage
- Un ensemble de points de couverture
- Couverture croisée entre les points de couverture
- Paramètres de forme optionnels
- Options de couverture
- Coverfroup Est un type de structure défini par l'utilisateur
- Après avoir défini le type , Vous pouvez l'instancier plusieurs fois dans différents programmes
- Suivez - moi.classSimilaire,Une fois la définition terminée,Vous pouvez utiliser le constructeur
new()GénérercovergroupExemples【OOP】 covergroupPeut être défini dansmodule,program,interfaceOuclassMoyenne- Un
covergroupPeut contenir un ou plusieurs points de couverture- Un point de couverture peut être Une variableOuUne expression
- Chaque point de couverture a un ensemble
binsValeur, Cette valeur est liée à la variable échantillonnée ou à la conversion de la variable - Bins La valeur de peut être définie par l'utilisateur lui - même ,Ou parEDAOutils générés automatiquement
- covergroup Le nom doit être clair , Le nom vous permet de confirmer quelles fonctions sont écrasées , Il est préférable d'harmoniser avec le plan de validation
// Déclarez uncovergroup
covergroup cg;
….
endgroup
cg cg_inst = new;
- 1
- 2
- 3
- 4
- 5
- 6
- 7

XIII.、Modélisation de la couverture fonctionnelle
- Commencez par le plan de validation , Écrivez un modèle de couverture fonctionnelle qui peut être simulé
- Valeurs des variables et expressions échantillonnées dans la plateforme de validation (
coverpoints) - Dans l'exemple suivant, La plate - forme de validation génère des valeurs de port au hasard , Le plan de validation exige que toutes les valeurs soient traversées

XIV.、Rapport de couverture fonctionnelle

Quinze.、Événements d'échantillonnage pour la couverture fonctionnelle
- AveceventDéclenchécovergroup
- Lorsque la plate - forme de validation est déclenchée trans_ready Au moment de l'événement,ÉchantillonnageCovPort

16.、Couverture fonctionnelle:DéclencheurSystemVerilog Assertion

XVII.、 Définir les points de couverture : Signaux et expressions
Données d'échantillonnage
- Comment recueillir des renseignements sur la couverture ?
- Variables et expressions spécifiées dans le point de superposition ,SystemVerilog Un ensemble de bins, Pour enregistrer ces valeurs échantillonnées
- bins Est une mesure de la couverture fonctionnelle
- Après chaque Simulation , La base de données générée contient tous les bins
- EDA L'outil d'analyse peut lire cette base de données , Produire un rapport de couverture , Quelle partie de la conception est couverte par le rapport , Et la couverture totale
- Comment recueillir des renseignements sur la couverture ?
Privébins Et la couverture totale
- Calculer la couverture d'un point de couverture , Confirmer d'abord la quantité totale de toutes les valeurs possibles
- Couverture égale à l'échantillon bins Valeur divisée par le total binsValeur de
Expression d'échantillonnage
- Les expressions peuvent être échantillonnées , Mais vous devez vérifier le rapport de couverture , Assurez - vous que les valeurs d'échantillonnage sont correctes

Note::
lens32La couverture devrait être :24 / 32 = 75%. Méthode de calcul de la portée :hdr_len- Oui.3bit,Donc au total8Combinaisons,payload_lenHeure4bit,Donc au total16Combinaisons.Alors,Ça fait24Combinaisons0-23, Et l'espace total est0-31C'est - à - dire:32Combinaisons, Et enfin5'b0Donc...32 Certaines des combinaisons doivent avoir des valeurs inférieures à ,Alors...lens32La couverture de :24 / 32 = 75%
- Données d'échantillonnage:
bins- Privébins Et la couverture totale
- SystemVerilog Création automatique de points de recouvrement bins
- UnN L'expression du BIT a
2 N 2^N </span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.841331em; vertical-align: 0em;"></span><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height: 0.841331em;"><span class="" style="top: -3.063em; margin-right: 0.05em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">N</span></span></span></span></span></span></span></span></span></span></span></span>Valeurs valides</li><li>Un3bitVariable deportOui.8Valeur effective</li></ul> </li><li> Limiter la génération automatique binsNombre de <ul><li>covergroup Options<code>auto_bin_max</code> Spécifier la génération automatique binsNombre maximum de,La valeur par défaut est64bins</li></ul> </li></ul> </li></ul>
- Privébins Et la couverture totale

Note::Génération automatiquebins Ce genre de chose devrait être moins dans la pratique !

- Q: Qu'est - ce qu'un point de fonction ?
- A:UT/BT Points de fonction plus de modules de mise au point ;IT La correspondance peut être un flux de données ;ST Il peut s'agir d'un scénario d'application au niveau du système
- Donc..., Les points de fonction sont différents level Les points correspondant à la décomposition sur la validation sont différents
Dix - huit.、 Définir les points de couverture :bins
- Définition de l'utilisateurbins
- Nom explicite
binsPeut améliorer la précision , Faciliter la couverture statistique
- Nom explicite

Note::Pourquoi23 Ça n'arrivera pas ?hdr_lenLa valeur maximale pour
7,Etpayload_lenLa valeur maximale pour22,Donc...lenLa valeur maximale pour22Ça n'arrivera pas.23!
- Point de couverturebinsNom de
- DéfinitionbinsHeure
- Valeur requise par l'utilisateur pour limiter les statistiques de couverture
- SystemVerilog Ne plus créer automatiquement bins, Et ignorer non défini par l'utilisateur binsValeur
- Seulement Défini par l'utilisateurbins Pour calculer la couverture fonctionnelle
- Utilisateur par défautbin Les valeurs peuvent être oubliées
- DéfinitionbinsHeure


XIX.、 Définir les points de couverture :Couverture conditionnelle
- Couverture conditionnelle( Les deux utilisations suivantes sont équivalentes )
- Utiliser des mots clés
iffAjouter une condition pour couvrir le point (Plus simple) - Utiliser
startEtstopFonctions
- Utiliser des mots clés


Vingt.、 Définir les points de couverture : Superposition du saut d'état
Note:: Au - dessus, il y a des points de recouvrement statiques , Voici une collection de superpositions pour les points de commutation d'état .
- Transition Coverage Couverture des sauts
- Saut d'état du point de couverture défini par l'utilisateur , Et recueillir des informations pertinentes
- Utiliser
?Les jokers égaux représentent l'état et le saut d'état

Attention!:Ci - dessus
t2- Oui.1À3;1À4;2À3;2À4, Quatre situations de saut !
Note::Quand il y a plus d'états,Peut être utilisé?Jokers
Vingt et un.、 Définir les points de couverture : Couverture croisée
Cross CoverageCouverture croisée- Dans le Groupe de couverture , Vous pouvez définir l'intersection entre deux ou plusieurs points de couverture ou variables Couverture

Note::kind Total
16Combinaisons d'espèces,portTotal8Combinaisons d'espèces, Il y a16x8=128Combinaisons d'espèces

Vingt - deux.、 Couverture paramétrique : Fournir la réutilisation du Code
- Paramétriquecovergroup
- SystemVerilog Autoriser la création de covergroup, Faciliter la création de définitions communes

Vingt - trois.、covergroupComplément opérationnel(2021-10-15)


Vingt - quatre.、Résumé
- Technologie de vérification fondée sur la couverture
- Pourquoi est - ce basé sur la couverture ? L'ensemble de la validation dépend de l'état d'avancement de la validation , La nécessité d'une couverture, un critère quantifiable, montre des progrès. . La couverture fonctionnelle est généralement 100%, Couverture du Code proche 100%( La couverture conditionnelle doit être basée sur le type de circuit spécifique , En général, il est difficile d'atteindre 100%, Doit être déterminé selon un code différent ). En résumé, il y a un objectif de couverture lors de la planification de la validation , Atteindre l'objectif de couverture , Pour satisfaire à nos exigences !Un autre point à souligner, Il ne s'agit pas d'atteindre la couverture, mais de vérifier OKC'est, Une fois la couverture atteinte , J'ai besoin de voir des choses comme des défauts, etc . Si la couverture ok, Mais les défauts restent élevés , Il n'est pas prouvé à ce stade que la validation est convergente !Un autre point, La couverture fonctionnelle est écrite par le validateur lui - même , Des mots écrits subjectivement , Peut - être pas tout à fait écrit au début , Donc même si 100%, On ne peut pas dire non plus que toutes les fonctions sont écrasées ! Parce que le scénario de couverture lui - même n'est pas écrit coverÀ, Donc tout le processus a besoin de plusieurs itérations pour finir .
- En dernier analyse, Souviens - toi de quelques points. .1、 Le taux de couverture est une échelle utilisée pour mesurer les progrès de la validation .2、 Incorporé dans le plan de validation , Un objectif de couverture doit être reflété au début de la validation .
- Type de couverture: Couverture des codes et des fonctions
- La couverture du Code est une couverture qui est automatiquement collectée par un outil objectif basé sur la structure de description du Code. ; Le taux de couverture fonctionnelle est le vérificateur qui analyse les spécifications fonctionnelles que nous voulons vérifier à partir du cahier des charges en tant qu'entrée. DUTQuelles sont les caractéristiques?, Puis écrivez ces points de fonction !
- La couverture du Code ne signifie pas que la fonctionnalité répond aux exigences ! Si la couverture du Code n'est pas suffisante , La validation est donc incomplète .
- SV Modélisation de la couverture fonctionnelle dans
- Définir un modèle de couverture:covergroup
- Définir les points de couverture :coverpoint
- Couvrir les points bins( Limites de contraintes similaires ,Il y a une couverture conditionnelle.、 Couverture croisée 、transitionÉcraser( Couverture au fil du temps ))
- Fonction de couverture (Paramètres de passage)
X、Exercices pratiques
X.1、Écrire le code source
ModifierMakefile, Parce que nous devons voir la couverture ,Il faut doncMakefileAjouterdve Commandes liées à l'outil .
Makefile
comp_file = ;
all: comp run dve_cov
comp:
vcs -full64 -sverilog -debug_all -timescale=1ns/1ps $(comp_file) -l comp.log
run:
./simv -l $(comp_file).log
dve_wave:
dve -vpd vcdplus.vpd &
dve_cov:
dve -full64 -covdir simv.vdb
log:
sed '/^[^*].*/d' $(comp_file).log > rslt.log
open:
gvim rslt.log
clean:
rm -rf csrc simv* *.log ucli.key
dve_waveÀ l'arrièreSVAOn va utiliser,Pas pour le moment- Changement
allPour:comp run dve_cov dve_covC'est ce dont nous avons besoin pour collecter la couverture
cov_demo.sv
module cov_demo();
class transaction;//Motivation
rand bit [31:0] data;
rand bit [2:0] port;
/* constraint data_c1{
data inside{
[0:100], [101:9999], [10000:12000]};
} */
endclass
covergroup cov_grp;
cport : coverpoint tr.port;
cdata : coverpoint tr.data;
/* cdata : coverpoint tr.data {
bins min = {
[0:100]};
bins mid = {
[101:9999]};
bins max = {
[10000:$]};
}*/
endgroup
transaction tr = new;
cov_grp ck = new;
initial begin
repeat(32) begin//Nombre de répétitions
tr.randomize;// Envoyer des incitations
ck.sample();// Couverture de la collecte
end
end
endmodule
portEtdataJuste un nom avant le point - virgule , N'importe quoi !

X.2、Exécuter le code source
Mise en œuvremake comp_file=cov_demo.sv Sera automatiquement compilé et lancé et éjecté DVE Fenêtre pour voir la couverture !

Cliquez sur le côté gauche<Function Groups>De+ Élargissez cette option , Puis double - cliquez cov_demo::cov_grp Covergroup definition


Visible sur le port série droit cov_demo::cov_grp La couverture correspondante n'est que de 14.84%, C'est très bas ! Vous pouvez continuer à cliquer sur cdataEtcport Quelles sont les superpositions des variables que vous verrez à droite , Ce qui n'est pas couvert .Comme le montre la figure ci - dessous::


Note:: Parce que par défaut bins, Donc ce qui est marqué ici est
auto.auto binsDans le cas de,bins Il y a beaucoup de catégories pour , La couverture est particulièrement faible !
Il n'est pas difficile de voir à partir de la figure ci - dessous ,cportCouverture25%, Des informations spécifiques sur la couverture sont disponibles à droite ,6Et7 Un coup 1Et3Une fois,Et0-56 Les valeurs ne sont pas écrasées ,Donc la couverture est2/8=0.25.

Dans les expériences ci - dessus, On a juste repeatC'est4Une fois, Ce qui réduit la portée du coup ,La couverture n'est que25%C'est logique..Ensuite, nous modifionsrepeatLire comme suit:32,Augmentation du nombre de fois, Il est possible d'étendre la portée des coups ,C'est - à - direcportEtcdata La couverture des variables augmentera également !
Cliquez sur le coin supérieur droit pour fermer DVE,Modifier le code sourcerepeatParamètres,Et redirigerMakefileScript.
Les résultats de l'opération sont présentés dans la figure ci - dessous., Vous pouvez voir que la couverture globale est 69.53%,Augmentation significative.Parmi euxcportDe8 Tous les cas couverts ,Donc la couverture est100%!

Ensuite, nous utilisons la personnalisation bins,Annulation14-18Commentaire de ligne,Et mettre13Commentaire de ligne.Voici le général.dataDivisé en trois catégories, Prenez le premier type minPar exemple,,Tant qu'il apparaît0~100N'importe quel nombre de,Même s'il frappemin, Même un point d'essai équivalent ! Comme produire un 50,Donc ça veut dire0~100 Une telle portée a été testée !
Comme le montre la figure ci - dessous:,Je vois.cdataC'est couvert.max,PourmidEtmin Pas de couverture , À ce stade, nous ne pouvons qu'ajuster les contraintes de l'excitation aléatoire , Qu'il produise des moyennes et des petites valeurs !

Annulez la 6-8Commentaire de ligne,Paire de mise en œuvredata Limiter la portée de . Pour faciliter DVE,ExécutionMakefileScript,Je vois.cdata Le taux de couverture et le taux de couverture global ont atteint 100%!

Note:: Si une classe n'est pas écrasée , Nous pouvons réduire les contraintes , Pour l'écraser individuellement . Voici une révélation , Peut exécuter plusieurs cas d'utilisation , Exécuter plusieurs gammes par cas d'utilisation , Donc ça finit par arriver. merge,data La couverture de 100%C'est!
边栏推荐
- Summer safety is very important! Emergency safety education enters kindergarten
- Ctfshow, information collection: Web3
- [deep learning] image hyperspectral experiment: srcnn/fsrcnn
- 【目标检测】YOLOv5跑通VOC2007数据集
- Novel Slot Detection: A Benchmark for Discovering Unknown Slot Types in the Dialogue System
- Bits and Information & integer notes
- jacoco代码覆盖率
- 使用Scrapy框架爬取网页并保存到Mysql的实现
- Integer learning
- Unity之ASE实现卡通火焰
猜你喜欢

2022全开源企业发卡网修复短网址等BUG_2022企业级多商户发卡平台源码

Apache multiple component vulnerability disclosure (cve-2022-32533/cve-2022-33980/cve-2021-37839)

知否|两大风控最重要指标与客群好坏的关系分析

IDA pro逆向工具寻找socket server的IP和port

Stream learning notes
![[quick start for Digital IC Validation] 26. Ahb - sramc (6) for system verilog project practice (Basic Points of APB Protocol)](/img/7e/188e57ee026200478a6f61eb507c92.png)
[quick start for Digital IC Validation] 26. Ahb - sramc (6) for system verilog project practice (Basic Points of APB Protocol)

Ctfshow, information collection: web12
![[understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper](/img/38/cc5bb5eaa3dcee5ae2d51a904cf26a.png)
[understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper
Window环境下配置Mongodb数据库

MySQL bit类型解析
随机推荐
【OBS】RTMPSockBuf_Fill, remote host closed connection.
Niuke real problem programming - Day11
Nacos一致性协议 CP/AP/JRaft/Distro协议
Used by Jetson AgX Orin canfd
Ctfshow, information collection: Web3
Discussion on CPU and chiplet Technology
数学建模——什么是数学建模
jacoco代码覆盖率
Do you know the relationship between the most important indicators of two strong wind control and the quality of the customer base
MongoD管理数据库的方法介绍
Ctfshow, information collection: web9
居然从408改考自命题!211华北电力大学(北京)
Window环境下配置Mongodb数据库
摘抄的只言片语
Pat grade a 1103 integer factorizatio
2. Basic knowledge of golang
TypeScript 发布 4.8 beta 版本
Bits and Information & integer notes
[deep learning] image hyperspectral experiment: srcnn/fsrcnn
暑期安全很重要!应急安全教育走进幼儿园
