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:26]
ionut.pascal [Description and requirements]
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 states ​shall be added for each instruction ​in order to implement ​the desired instructionsYou can follow the micro-operations ​suggested ​in the recourse files. Each micro-operation ​shall have one individual ​state. ​+The file to be modified is ''​control_unit.v''​. Several ​distinct ​states ​must be introduced ​for each instruction to achieve ​the required functionalityThe 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 can take the basic example ​and add your desired instructionIf you assemble ​and run through ​micro-step, you can see each instruction ​executed ​step-by-step. Your implementation ​can follow it!</​note>​+<note important>​In the simulatoryou 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 | 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 46: 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 54: 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.1767803171.txt.gz · Last modified: 2026/01/07 18:26 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