当前位置:网站首页>Conception et mise en service du processeur - chapitre 4 tâches pratiques
Conception et mise en service du processeur - chapitre 4 tâches pratiques
2022-07-01 08:13:00 【서가가장아름닸다.】
Simple.CPUVoir la mise en service de la conceptionDeBug—MyCPUSection
Prends une note.:
Run All Les options ne sont disponibles qu'après avoir accédé à la page de simulation,Et le processus qu'il exécute est indiqué dans le coin inférieur droit.
1.SignalisationBug

Ajouter cinq paragraphesPCLa valeur du signal n'est pas difficile à trouver,IF_PC => ID_PCNon. EXE_PC,C'est - à - dire que la phase d'exécution n'a pas reçu dePCValeur.Résultats de l'inspection:
ifJ'ai transmis les données àid,Maisid_stageÇa n'a pas marché.fs_to_ds_bus_r <= fs_to_ds_bus.Vas - y.idModule,Découverteds_validNon assigné.
Avant modification:
Après modification:
always @(posedge clk) begin // Bug 1
if(reset) begin
ds_valid <= 1'b0;
end
else if(ds_allowin) begin
ds_valid <= fs_to_ds_valid;
end
if (fs_to_ds_valid && ds_allowin) begin
fs_to_ds_bus_r <= fs_to_ds_bus;
end
end
2.Typique"Z"SignalBug

Cela est souvent dû au fait que les variables ne sont pas assignées .Trouverid_stage Module Discovery :
load_op Aucune instruction d'affectation connexe . Ajouter au bon endroit :
load_opÇa veut direloadDeoperate Section cette section devrait être alignée sur lw Connexion à la commande .
SimulationBugPetit épisode
Compléter la logique ci - dessus Bug, Refaire la simulation , L'épisode suivant apparaît :
La plupart de ces indices sont dus à des erreurs de frappe dans certaines variables , Ne paniquez pas. .Cliquez surok Vous pouvez voir le chemin exact du fichier pour le problème :
Ouvrez le bloc - notes pour voir l'emplacement exact des erreurs .
MonBugPositionné comme:ID.stage De 128 Lignes et troisième lignes

Utiliser de nouveaux outils -Basé surTrace Mise en service de la comparaison
3.Addiu Paramètres de transfert de l'instance d'instruction Bug
Run All Le premier apparaît après trace Erreur de comparaison , Les messages d'erreur de comparaison sont tirés des codes pertinents suivants: :
On peut voir que les informations relatives à la comparaison sont les suivantes: :PCValeur、 Registre de destination écrit 、 Écrire les données de destination 
Analyse:PCLa valeur est: 0x bfc00000, Quelle directive représente - t - elle? ?
In lab3\CPU_CDE\soft\func_lab3\obj\test.s Recherche moyenne bfc00000 Vous pouvez voir les instructions correspondantes :
Pour 0x2408 ffff Instructions correspondantes 001001 00000 01000 1111111111111111
Consultez le tableau pour savoir, Le format d'instruction correspondant est addiuDirectives, Et l'emplacement de l'erreur est sur les données écrites , Il faut vérifier. aluModules etEXE_stageModule,Découverte:
EXE_stage Erreur d'Instanciation des paramètres du module 
Modifier comme suit::
alu u_alu(
.alu_op (es_alu_op ),
.alu_src1 (es_alu_src1 ),
.alu_src2 (es_alu_src2 ),
.alu_result (es_alu_result)
);
4.Bug

Je vois. PC Une erreur s'est produite, Il doit y avoir une branche ou un saut. , Regardons quelques instructions à proximité. (test.sDocumentation).
/media/sf_func_lab3/start.S:19
bfc00004: 2408ffff li t0,-1
/media/sf_func_lab3/start.S:20
bfc00008: 100000e0 b bfc0038c <locate>
/media/sf_func_lab3/start.S:21
bfc0000c: 00000000 nop
/media/sf_func_lab3/start.S:24
bfc00010: 3c088000 lui t0,0x8000
/media/sf_func_lab3/start.S:25
bfc00014: 25290001 addiu t1,t1,1
Il est évident que bfc00008 Cette instruction est une instruction de branche ,Et mycpu Pas de saut .
Expliquez d'abord nop Directives, C'est gentil de définir l'instruction slot Delay à nop,Comme ci - dessus,nop La directive n'exige pas non plus de mise en œuvre spécifique .
Le flux de contrôle s'écoule d'abord dans l'étape du doigt de préfet , Puis pré - Fetch Finger phase Update PC Et visiter RAM Obtenir des instructions ,PC Et RAM Enfin, la phase de décodage s'écoule simultanément , Le saut est effectué au cours de la phase de décodage par le contrôle Logique combinatoire .
Nous Séquence d'exécution prévue 
Je vois.,Dans nos attentes, Le pré - jugement des instructions de branche est effectué par la phase de décodage .
Celui - là. B Directive modifiée par r0 Hengwei 0 Et BEQ La directive obtient.
Nous pouvons trouver que lorsque cette instruction de fente de retard , J'aurais dû. assign br_bus = {br_taken,br_target};, Mais les deux signaux les plus bas sont les mêmes. , Pour trouver le problème .
Problème avec le chemin du fichier :\lab3\CPU_CDE\mycpu_verify\rtl\myCPU\mycpu.h
Changer la largeur du BIT :
`define BR_BUS_WD 33
5.Bug
Erreur globale 
Cette erreur est toujours aluModule( Assignation de l'inadéquation des largeurs de bits avant et arrière ):
Changement:
assign sr_result = sr64_result[31:0];
6.Bug

C'est parce que RTL Circuit combiné présent dans le Code ,Pas facile à trouver., Si, par hasard, vous voyez cette ligne, , Son erreur est encore évidente. .
alu.vErreur du module:
Changement:
assign or_result = alu_src1 | alu_src2;
PC-BugPetit épisode
Après avoir résolu les problèmes ci - dessus , Rediriger pour découvrir ce phénomène ...
Observations: Writeback Level for each Running Error reported PCAvectrace.txtIncohérence, Mais son numéro de registre de destination et ses données sont corrects . Quelle est la cause? ?
7.Le dernier.Bug
Chemin du fichier d'erreur :mycpu_verify => rtl => myCPU => tools.v
Un peu plus d'attention va voir ici. decoder_6_64 Il n'y a pas assez de décodage pour le module 64Bits,C'est - à - dire seulement【62:0】, Donc ça devrait être changé en :
generate for (i=0; i<64; i=i+1) begin:gen_for_dec_6_64 //Bug 7
Affichage vidéo réussi :
Il est recommandé d'allumer tous les interrupteurs de cadran lors de l'essai sur le tableau supérieur. , La vitesse de comptage est la plus lente en ce moment , Faciliter l'observation des phénomènes expérimentaux . On peut en composer un ou deux. ,Vitesse modérée.
Liens vidéo:Simple.CPU Tâches pratiques de référence en matière de conception
RÉFÉRENCES:
Liens vers des blogs connexes :CPUConception pratique lab3
边栏推荐
- Airsim radar camera fusion to generate color point cloud
- Oracle create auto increment ID
- Using settoolkit to forge sites to steal user information
- How to make the two financial transactions faster
- Thesis learning -- Analysis and Research on similarity query of hydrological time series
- 源代码加密的意义和措施
- 栈实现计算器
- Practice and Thinking on the architecture of a set of 100000 TPS im integrated message system
- Gru of RNN
- [batch dos-cmd command - summary and summary] - Common operators in the CMD window (<, < <, & <,>, > >, & >, & >, & &, ||, (),;, @)
猜你喜欢
![[question brushing] character statistics [0]](/img/cc/f5aaecd920c502180303d92447e54f.png)
[question brushing] character statistics [0]

如何使用layui将数据库中的数据以表格的形式展现出来

一套十万级TPS的IM综合消息系统的架构实践与思考

Learn reptiles for a month and earn 6000 a month? Tell you the truth about the reptile, netizen: I wish I had known it earlier

Access report realizes subtotal function

Soft keyboard height error

web254

038 network security JS

Latex table

Principle and process of embossing
随机推荐
Airsim雷达相机融合生成彩色点云
[untitled]
[introduction] approximate value
01 NumPy介绍
Source code analysis of open source API gateway APIs IX
[force deduction 10 days SQL introduction] Day10 control flow
Contenttype comparison of all types
使用beef劫持用户浏览器
【批处理DOS-CMD-汇总】扩展变量-延迟变量cmd /v:on、cmd /v:off、setlocal enabledelayedexpansion、DisableDelayedExpansion
uni 热更新
Access report realizes subtotal function
window c盘满了
Transaction method call @transactional
Gui Gui programming (XV) - use scale to control font size changes
[batch dos-cmd command - summary and summary] - Common operators in the CMD window (<, < <, & <,>, > >, & >, & >, & &, ||, (),;, @)
Adding color blocks to Seaborn clustermap matrix
7-26 word length (input and output in the loop)
Codeforces Round #803 (Div. 2) VP补题
SQL number injection and character injection
Airsim radar camera fusion to generate color point cloud