commit 67c7cf242a8d0099ab908872d62d67bda6af1e35 Author: sfja Date: Mon May 4 14:55:58 2026 +0200 init diff --git a/docs/case_description.md b/docs/case_description.md new file mode 100644 index 0000000..e2cdda8 --- /dev/null +++ b/docs/case_description.md @@ -0,0 +1,19 @@ + +# Case description + +**Logic simulator for integrated circuits** + +We are Kim's Chips (Intel, AMD, Atmel, ST Microcontrollers, etc.). As an integrated circuit manufacturer we develop and produce integrated circuit solutions. These solutions consist both of physical hardware in the form of silicon chips and embedded software. + +Integrated circuits are electrical circuits built into silicon chips. Silicon chips use semiconductor technology and are manufactured using lithography technology. In addition to the hardware, integrated circuits are also sold with accompanying embedded software. The embedded software provides support, so that the customers can write their specific applications on top. + +The development process of integrated curcuits consist there both of designing the actual hardware, but also development of the embedded software. An inefficiency arises in the development process. The issue is that development of the embedded software has to take place after both design and production of the physical hardware. This is because the software can't be run or tested without the hardware. This makes the software development process dependent on the hardware production process. Because of this, the software development process cannot be done in parallel with the hardware development or production, it has to be done afterwards. It would be beneficial, if this process could be done in parallel. + +Logic circuits are circuits of logic gates. Logic circuits can be used as an abstraction of electrical circuits for integrated circuits. For complex chip designs, logic circuits are used as the primary medium for designing the chip. In addition to being used for designing the integrated circuit, a logic circuit can also be used for simulations. + +Because logic circuits can be used for simulations, they can also enable testing of embedded software. If you therefore can build a chip as a logic circuit, you can simulate the chip, and run and test software on the simulated chip. Using this method, the embedded software development process can be decoupled as to be independent from the hardware development and production process. + +For this purpose, we would like a software solution that enables us as chip manufacturers to design and specify logic circuits as to simulate hardware chips to run embedded software. The circuits should be specified by assembling logic gates. We would like a visual tool for assembling and organizing logic gates. The tool should be able to simulate a specified circuit. We want the simulation to be a live simulation, were we can interactively test software and interact with the circuit. + + + diff --git a/docs/high_level_system_schematic.png b/docs/high_level_system_schematic.png new file mode 100644 index 0000000..43f917a Binary files /dev/null and b/docs/high_level_system_schematic.png differ diff --git a/docs/initial_time_estimation.jpg b/docs/initial_time_estimation.jpg new file mode 100644 index 0000000..1cc9b9b Binary files /dev/null and b/docs/initial_time_estimation.jpg differ diff --git a/docs/process.md b/docs/process.md new file mode 100644 index 0000000..cb1f86f --- /dev/null +++ b/docs/process.md @@ -0,0 +1,8 @@ + +# Process + +## Initial estimation + +![](./initial_time_estimation.jpg) + + diff --git a/docs/requirement_specification.md b/docs/requirement_specification.md new file mode 100644 index 0000000..bd02578 --- /dev/null +++ b/docs/requirement_specification.md @@ -0,0 +1,35 @@ + +# Requirement specification + +**NandSim** - A tool for specifying and simulating integrated circuits with logic gates. + +The customer is an integrated circuit chip (ICC) manufacturer. The tool is to be designed used for software developers and as an interaction point between hardware developers and software developers. See the [case description](./case_description.md). + +The solution is a visual tool, that both software and hardware developers can use to build and simulate logic circuit models. The models consist of assembled logic gates. To organize complicated logic, the gates of the circuits can be organized into reusable component. The tool can simulate the modelled circuits in an interactive live simulation. Software developers should be able to develop software targetting the modelled circuits, and further be able to execute and test code in the simulation. + +The goal is a tool that enable ICC manufacturers, specifically software and hardware developers to design and develop circuit models and embedded software, as to reduce the development time for an ICC solution, by decoupling the software and hardware development processes. + +## Requirements + +As a developer using this solution, I should be able to: + +- **★ assemble logic circuits visually by placing and wiring together primitive logic gates.** This includes a visual editor area, where logic gates and components can be inserted and dragged around, and where each gate and component can be wired together. +- **★ create circuit components build with logic gates that can be used like primitive logic gates.** To help organize and make complex circuits managable, sub sections of a circuit can be encapsulated in a component. +- **★ simulate the logic of a circuit.** A simulation conists of initializing a state according to the circuit and the inputs given. The simulation should be continous, and support simulating state dependent on a previous state. +- **★ interact visually with a simulation of a circuit.** The simulation should support updating the state according to any changes made to the circuit. +- **upload files with data input for complex circuits, including program and data files in suitable file formats such as binary or hexademical.** The purpose is to enable flashing of a simulated circuit with data and programs to be used in the simulation. +- **monitor complex circuit output in suitable formats such as base 10 displays, hexademical or ASCII text.** To be able to monitor the produced outputs of a simulated circuits, the tools should have ways to display outputs appropriately. +- **create and export component libraries.** Components created in one project should also be usable in other projects. +- **save projects in the cloud with a user account.** Projects can be stored in the cloud using user accounts. With the same user account, projects can be accessed, edited and saved on multiple computers. +- **collaborate with others using cloud projects and multiple user accounts.** Multiple people can collaborate on the same project, each using their own user account. This includes a strategy for work synchronization and work conflict resolution. + +★ marked requirements demarcate the minimum viable product. + +## Non-functional requirements + +TBD + +## Delimination + +TBD +