Giter VIP home page Giter VIP logo

aecad's Introduction

image

aeCAD

What is it?

Electronic Design Automation software, like KiCAD, but using the web technologies (runs in the browser or desktop via ElectronJS) like EasyEDA, with offline installation support. It will be like Onshape to Solidworks.

Basically a software to create schematics and real-world drawings for physical production (and/or machining).

Key Features

Feature                                                    Description
Parametric footprints Create inheritable, parametric footprints. Only new topologies has to be created, rest of footprints are only differs by their parameter values, such as pin count and pin labels. No need for incomprehensible libraries.
Component based design Create re-usable circuits to build huge and complex circuits.
Scripting support Create schemas and PCB layouts via Livescript and/or Javascript.
Correct Tools for Placement Appropriate tools to use your EDA in tandem with a mechanical CAD output for a correct approach of handling mechanical constraints (PCB geometry, bolt placements, socket placements, heatsink placements, etc.)
Browser based Installation headache is over. Open your browser, start using. No need for active internet connection after first load.
Healthy Shortcuts and tools are designed Carpal Tunnel Syndrome in mind.

Status

Pre-beta: We, as Aktos Electronics, are using aeCAD in production. However some cruical features are still missing.

Why Another Software?

What features will aeCAD have?

  • Web based collaboration

    • Realtime online collaboration for helping, task sharing, etc.
  • Versioning support for drawings out of the box: You may produce some PCB's and you may update the schematics later on. PCB's will include an automatically tracked schematic version.

  • Support for Test Driven Development: Every subproject might require its own test procedure. Test procedures will be defined within schematics and concatenated as a checklist on demand.

  • Inherit from Kicad

    • Selecting a component in schematic/PCB will show where it is located on PCB/schematic.
      • Smooth camera change between components
      • Distincly visible cursor for schematics (and pcb)
  • Drawing records: Any drawing will be able to recorded programmatically

    • "How to" support out of the box: Send a portion of a real drawing record to a colleauge/user that will serve as a mini tutorial.
      • Makes it possible to search in tutorial "videos"
    • Infinite undo/redo operations
    • Create tutorials from real works
    • Edit to strip down a drawing record video by a text editor (or online) to make HowTo's shorter.
    • Visual representation of two versions of a drawing, like git diff but more visual form like in Meld, step by step (like a motion capture video)
    • Replay since last commit: A quick and smooth replay from last commit helps developer what he is changed so far, thus will allow a proper commit message
  • Hotkeys:

    • Keyboard focused hotkeys: Hotkeys should be bound to physical keys on the keyboard, not letters, because main purpose of hotkeys is make usage faster and if keyboard layout is different from US (or like), "hotkeys" might not be "hot" enough.
    • It will be possible to bind macros to hotkeys (press a KEY to do that, do this and do some other thing).
  • Virtual layers: Grouping some drawings at the same physical layer, like the layers in Gimp.

  • A complete graphics editor (including align tool, rulers, etc.)

Schematic editor

  • Create new components easily
  • Component based design:
    • You will be able to use your existing components (sub-circuits) in your PCB design (as if they are modules)
      • Copy-n-paste will create another instance of a sub-circuit. References will be stored as changes in each instance.
      • Any instance will be made unique (like in SketchUP)
      • Any instance's class can be changed to another class (sub-circuit).
        • Current references may or may not be changed. This will be left to the user.
      • Any selection can be turned into a sub-circuit in-place.
    • Dependency tracking for sub-circuits
  • Schematic time design rules (see Advanced desing rules)
  • Human readable Netlist syntax: Any schematic can be read in text mode and can be edited by hand, with a text editor.
  • Topological versioning: Schematic file itself might be changed somehow (added/removed/moved a wire, for example) but topology might stay intact. This topological version is important, schematic file version (the SHA1 of the file, for example) is not. So schematic editor should provide this topological version for printing onto the PCB.
  • Printable schematics:
    • Cross references (like in EPlan)
    • A separate, well structured annotation table which will let you to edit the printed version of the schematic by hand and pass both the annotation table and the schematics to the software from printed version, lazily.
  • Wire/label representation of a connection (like in Siemens Logo Comfort), but highlight the connection as wire on hover.

Footprints

  • Components that will be used in a single footprint should be assigned independently from schematic. For example, a schematic may include 4 different opamps and these opamps might be chosen 4 different IC's or 1 IC with 4 opamps. This difference is independent from schematic, thus must be adjusted independently from schematic time. (This is mandatory if we want to use multiple components in an IC package while each of these components are coming from different instances of a sub-circuit. This is a kind of component optimization.)
  • Class based footprint association:
    • Declare your technology (eg. "I'll use SMD_1206 packages for resistors, etc.), overwrite any of the components when needed.
    • Change your technology definition later if needed (eg. "I'll use 805 packages instead of 1206 packages" and it will handle the rest)

PCB editor

  • Component based approach:

    • You will be able to re-use your existing PCB drawings for a schematic component (as if they are castellated circuits).
    • Multiple association of PCB drawings for the same schematic: You may draw more than one PCB for the same schematic. You will be able to use any of them, or create a new design. For example, you may define PCB layouts for the same schematic for single sided PCB placement, for double sided PCB placement, for 4 layer setup, etc... over time and use any of them later on.
  • Inherit from Kicad:

  • Components as PCB layers: A zero ohm resistor or a piece of wire might be used just like a jumper.

  • Modular PCB design:

    • A design may include another project as a module. Pin connections should point the outer project's specified pins.
    • A design may be made up of more than one PCB (modules). Provide a free cabling layer for that purpose.

Design Rules

  • Schematic time design rules
    • Component based DRC (design rule checking): A component will be able to make you warn if you connect a pin to any wrong ping (for example, a warning will be thrown if you connect VDD to GND.
    • PCB Design rule definitions: You are not always allowed to place your components onto the PCB freely in real-world applications. For example the manufacturer of an MCU requires you to place parasitic capacitors as close as possible to the MCU pins. Moreover, they require some specific capacitors to be placed close to some specific pins. This should (and will) be possible at the definition (schematic/sub-circuit) step.
  • PCB time design rules
    • Dynamic collision dedection: A realtime process that checks if PCB can currently fit in the physical case.
    • Inherit from Kicad
      • Clearance definition

Intended Workflow

When we need a custom hardware, following actions must be taken in this specific order:

  1. Design/choose or optimize the device case/housing.
  2. Get or create the connectors' 3D designs, place them onto the housing in your preferred mechanical CAD software.
  3. PCB edge cuts, connector placements on the PCB and mechanical keep out areas should be determined by 3D design phase.
  4. Import the PCB layout in aecad/sketcher.
  5. Place the corresponding footprints on the PCB and draw the traces.
  6. If any optimization is required (because of component collision, insufficient PCB space, etc...), go to step 1.
  7. Produce a prototype PCB
  8. Finalize the design and create fabrication files (Gerber files etc.)

TODO

  • Get the good design bits from Horizon.
  • Get the good design bits from pcb-rnd

Similar Projects

aecad's People

Contributors

ceremcem avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.