Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ac-is:teme-ie:course_project [2026/01/07 18:51]
ionut.pascal [Implementation]
ac-is:teme-ie:course_project [2026/01/17 21:40] (current)
ionut.pascal [MARIE - Extend the ISA]
Line 1: Line 1:
 ====== MARIE - Extend the ISA ====== ====== MARIE - Extend the ISA ======
  
-  * Soft Deadline: **17.01.2026**,​ **23:59** +  * Deadline: ​<del>**17.01.2026**,​ **23:59**</​del> ​**18.01.2026**, **11:59**
-  ​Hard Deadline: ​**17.01.2026**, **23:59**+
   * Publish date: **07.01.2026**   * Publish date: **07.01.2026**
-  * Last update: **07.01.2026, ​xx:xx**+  * Last update: **17.01.2026, ​21:35**
   * History:   * History:
-    * 07.01.2026, ​xx:xx +    * 07.01.2026, ​19:05 
-      * Publish ​the assignment+      * Assignment published, without ​the code skeleton and associated tests. 
 +    * 14.01.2026, 17:05 
 +      * Update the skeleton and provide sanity tests for each instruction;​ Add flags port in the ''​control_unit.v'';​ use it for SkipCond 
 +      * Update the implementation section with testing istructions 
 +    * 17.01.2026, 21:35 
 +      * Typo found in RAM.v for LoadI testcase 
 +      * Increase deadline 
 +<note important>​**There is no fix provided in skeleton!** Please do a local change as suggested on the forum!</​note>​ 
  
 ===== Objectives ===== ===== Objectives =====
Line 27: Line 34:
  
  
-===== Implementation =====+===== Implementation ​& Testing=====
 The file to be modified is ''​control_unit.v''​. Several distinct states must be introduced for each instruction to achieve the required functionality. The micro-operations outlined in the simulator should be used as a guide. Each micro-operation should be associated with its own separate state. The file to be modified is ''​control_unit.v''​. Several distinct states must be introduced for each instruction to achieve the required functionality. The micro-operations outlined in the simulator should be used as a guide. Each micro-operation should be associated with its own separate state.
  
 <note important>​In the simulator, you may begin with a basic example. After assembling and executing the program in micro-step mode, you will be able to observe each instruction being carried out step-by-step. Your implementation may follow it!</​note>​ <note important>​In the simulator, you may begin with a basic example. After assembling and executing the program in micro-step mode, you will be able to observe each instruction being carried out step-by-step. Your implementation may follow it!</​note>​
  
-{{ :​ac-is:​teme-ie:​jns.jpg?​link&​700 |}}+{{ :​ac-is:​teme-ie:​jns.jpg?​link&​700 | RTN instruction description using the simulator}} 
 + 
 +For validation purposes, multiple tests were developed to ensure the correctness of the implementation. Test 0 runs by default and is expected to pass. When implementing a specific instruction,​ switch to the corresponding ''​define''​. Each test includes both previously implemented instructions and the instruction under test; therefore, the tasks are independent and have no dependencies on one another. 
 + 
 +<​code>​ 
 +    `define test_legacy ​  ​0 ​                //​legacy test for all the lab implemented instructions 
 +    `define test_subst ​   1                 //​simple test for Subst 
 +    `define test_jns ​     2                 //​simp test for JNS 
 +    `define test_loadI ​   3                 //​simp test for LoadI 
 +    `define test_loadImmi 4                 //​simp test for LoadImmi 
 +    `define test_skipCond 5                 //​simp test for SkipCond 
 +     
 +    parameter test_scenario = `test_legacy;​ //Change the desired test here 
 +</​code>​ 
 + 
 +After the test completes, the first indication of your implementation’s correctness is in the log message (see the images below). If the test passes, great job ^_^ ! If the test fails, debug it step by step by analyzing the waveform and comparing it with the assembly program. The ''​.asm''​ instructions are available in the ''​ram.v''​ file; load them into the MARIE simulator and run them for reference. 
 + 
 +{{ :​ac-is:​teme-ie:​pass_message.jpg?​nolink&​700 | Pass Messaage}} 
 + 
 +{{ :​ac-is:​teme-ie:​fail_message.jpg?​nolink&​700 | Fail Messaage}}
 ===== Notes ===== ===== Notes =====
  
-  * The implementation shall be similar to the approach we had during ​the labsby developing ​the state machine in the control_unit.v file; +  * Your project must include a **README** file describing ​the details of your implementationincluding ​the state machine ​implemented ​in the ''​control_unit''​. Inline comments within the Verilog code are also encouraged
-  * The number of the states ​is not limited; you can implement each instruction separately or make use of the common states that are already implemented. +  * The implementation should follow the methodology used during the laboratory sessions. 
-  * Implement each instruction and test it **individually**; debug is easier ​this way.+  * There is no restriction on the number of states; you may implement each instruction separately or reuse the common states that have already ​been implemented. 
 +  * Each instruction ​should be implemented ​and tested ​individually, as this approach simplifies debugging. A separate test-case ​is provided for this case
    
  
Line 47: Line 74:
     * a README file, which shall contain at least:     * a README file, which shall contain at least:
       * your name and group;       * your name and group;
-      * general presentation of your solution;+      * general presentation of your solution ​and the FSM diagram (it can be handwritten with a picture attached);
       * description of any complex coding parts that you consider additional explanation is needed and they are too long to be an inline comment;       * description of any complex coding parts that you consider additional explanation is needed and they are too long to be an inline comment;
   ​   ​
Line 55: Line 82:
 ===== Grading ===== ===== Grading =====
  
-  * +10.0 pts.: Correct ​implementation with the test passing (2.0 pts for each instruction)+  * +10.0 pts.: correct ​implementation with the test passing (2.0 pts for each instruction) 
 +  * -10.0 pts.: compilation failed;
   * -10.0 pts.: using looping instructions with variable steps (i.e. while x > 0);   * -10.0 pts.: using looping instructions with variable steps (i.e. while x > 0);
-  * -1.0 pts.:  the absence of the README file;+  * -50% pts.:  the absence of the README file
 +  * -2.0 pts.:  the files are not correctly uploaded in the moodle section;
   * -1.0 pts.:  bad coding style (chaotic indentation,​ irregular spacing, strange naming for variables, etc.);   * -1.0 pts.:  bad coding style (chaotic indentation,​ irregular spacing, strange naming for variables, etc.);
-  * -0.pts.:  incorrect using of continuous assignments ( assign ), procedural blocking ( = ) and non-blocking ( <= ) assignments;​+  * -1.pts.:  incorrect using of continuous assignments ( assign ), procedural blocking ( = ) and non-blocking ( <= ) assignments;​
   * -0.2 pts.:  other generic implementation issues (/issue);   * -0.2 pts.:  other generic implementation issues (/issue);
-  * -0.1 pts.:  useless code comments.+  * -0.1 pts.:  useless code comments
 +  * +0.5 pts.:  bonus for original implementation.
  
-Even if you do not finish the assignmentyou can receive ​up to 25% of the grade if you properly ​explain ​your idea in the README file. Your code must pass the compilation and run.+Even if the test(s) are not passingeach instruction may account for up to 25% of it's associated points ​if you clearly ​explain ​he underlying approach ​in the README file. The submitted ​code **must compile successfully**.
  
 +The final score will be scaled in the Grade section according to the weighting defined at the beginning of the course.
 ===== Recourses ===== ===== Recourses =====
-  * **VIVADO Project Files** - {{:​ac-is:​teme-ie:​MARIEproject_vivado.zip| skel_vivado}} 
-  * **MARIE Simulator DATABOOK** - [[https://​marie.js.org/​book.pdf|MARIE Sim Databook]] 
   * **MARIE Simulator** ​         - [[https://​marie.js.org |MARIE Sim ]]   * **MARIE Simulator** ​         - [[https://​marie.js.org |MARIE Sim ]]
 +  * **VIVADO Project Files** - {{:​ac-is:​teme-ie:​proj_skel.zip| skel_vivado}}
 +
 +<ifauth @ac-is>
  
 +</​ifauth>​
 ===== Appendix ===== ===== Appendix =====
ac-is/teme-ie/course_project.1767804668.txt.gz · Last modified: 2026/01/07 18:51 by ionut.pascal
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0