aboutsummaryrefslogtreecommitdiffstats
path: root/docs/archapi.md
Commit message (Expand)AuthorAgeFilesLines
* Make BaseArch getDecalGraphics return an empty rangegatecat2021-02-121-1/+1
* Add getBelHidden and add some missing "override" statements.Keith Rothman2021-02-111-0/+6
* Add BaseArchRanges for default ArchRanges typesgatecat2021-02-091-1/+1
* Update docs with API changesD. Shah2021-02-081-21/+160
* Add archArgs and archArgsToId to Arch APID. Shah2021-02-051-1/+9
* docs: Update archapi.md with IdStringListD. Shah2021-02-021-12/+12
* arch: Add getNameDelimiter API for string listsD. Shah2021-02-021-1/+4
* Make BELs/PIPs lowercase as bels/pips per review comment.Keith Rothman2021-02-021-19/+19
* Update documentation.Keith Rothman2021-02-021-21/+33
* Implement partitioning in placer_heap.Keith Rothman2021-02-021-1/+1
* Add archcheck for partition methods.Keith Rothman2021-02-021-3/+20
* Make some partition names consistent.Keith Rothman2021-02-021-3/+3
* Initial refactoring of placer API.Keith Rothman2021-02-021-4/+39
* cleanup: Spelling fixesD. Shah2021-01-281-4/+4
* Remove wire alias APIDavid Shah2020-10-151-10/+1
* Allow selection of router algorithmDavid Shah2020-02-031-1/+11
* docs: Document getRouteBoundingBoxDavid Shah2020-02-031-0/+7
* Add --placer option and refactor placer selectionDavid Shah2019-03-241-0/+11
* Merge remote-tracking branch 'origin/master' into timingapiEddie Hung2018-11-131-14/+20
|\
| * Various router1 fixes, Add BelId/WireId/PipId::operator<()Clifford Wolf2018-11-131-3/+3
| * Add getConflictingWireWire() arch API, streamline getConflictingXY semanticClifford Wolf2018-11-111-20/+16
| * Add getConflictingPipWire() arch API, router1 improvementsClifford Wolf2018-11-111-7/+17
* | archapi: Add getDelayFromNS to improve timing algorithm portabilityDavid Shah2018-11-121-0/+4
* | timing: iCE40 Arch API changes for clocking infoDavid Shah2018-11-121-3/+9
|/
* Add Arch attrs APIClifford Wolf2018-08-141-0/+15
* Add pip locationsClifford Wolf2018-08-091-5/+14
* Merge branch 'master' of github.com:YosysHQ/nextpnr into constidsClifford Wolf2018-08-081-6/+4
|\
| * docs: Update Arch API Cell Timing docsDavid Shah2018-08-081-6/+4
* | Get rid of PortPin and BelType (ice40, generic, docs)Clifford Wolf2018-08-081-28/+4
|/
* Modify docEddie Hung2018-08-061-2/+2
* API change: Use CellInfo* and NetInfo* as cell/net handles (archapi docs)Clifford Wolf2018-08-051-16/+16
* Update archapi.mdClifford Wolf2018-08-011-1/+10
* Improve archapi docClifford Wolf2018-08-011-76/+263
* Move FAQ, Wiki stuff to docs/Clifford Wolf2018-08-011-0/+282
class="kt">List_Record is record First : Chunk_Index_Type; Last : Chunk_Index_Type; Chunk_Idx : Nat32; Nbr : Natural; end record; package Listt is new Tables (Table_Component_Type => List_Record, Table_Index_Type => List_Type, Table_Low_Bound => 2, Table_Initial => 128); package Chunkt is new Tables (Table_Component_Type => Chunk_Type, Table_Index_Type => Chunk_Index_Type, Table_Low_Bound => 1, Table_Initial => 128); Chunk_Free_List : Chunk_Index_Type := No_Chunk_Index; procedure Free_Chunk (Idx : Chunk_Index_Type) is begin Chunkt.Table (Idx).Next := Chunk_Free_List; Chunk_Free_List := Idx; end Free_Chunk; function Get_Free_Chunk return Chunk_Index_Type is Res : Chunk_Index_Type; begin if Chunk_Free_List /= No_Chunk_Index then Res := Chunk_Free_List; Chunk_Free_List := Chunkt.Table (Res).Next; return Res; else return Chunkt.Allocate; end if; end Get_Free_Chunk; function Get_Nbr_Elements (List: List_Type) return Natural is begin return Listt.Table (List).Nbr; end Get_Nbr_Elements; function Is_Empty (List : List_Type) return Boolean is begin return Listt.Table (List).Nbr = 0; end Is_Empty; procedure Append_Element (List: List_Type; Element: El_Type) is L : List_Record renames Listt.Table (List); C : Chunk_Index_Type; begin L.Chunk_Idx := L.Chunk_Idx + 1; if L.Chunk_Idx < Chunk_Len then Chunkt.Table (L.Last).Els (L.Chunk_Idx) := Element; else C := Get_Free_Chunk; Chunkt.Table (C).Next := No_Chunk_Index; Chunkt.Table (C).Els (0) := Element; L.Chunk_Idx := 0; if L.Nbr = 0 then L.First := C; else Chunkt.Table (L.Last).Next := C; end if; L.Last := C; end if; L.Nbr := L.Nbr + 1; end Append_Element; function Get_First_Element (List: List_Type) return El_Type is L : List_Record renames Listt.Table (List); begin pragma Assert (L.Nbr > 0); return Chunkt.Table (L.First).Els (0); end Get_First_Element; -- Add (append) an element only if it was not already present in the list. procedure Add_Element (List: List_Type; El: El_Type) is It : Iterator; begin It := Iterate (List); while Is_Valid (It) loop if Get_Element (It) = El then return; end if; Next (It); end loop; Append_Element (List, El); end Add_Element; -- Chain of unused lists. List_Free_Chain : List_Type := Null_List; function Create_List return List_Type is Res : List_Type; begin if List_Free_Chain = Null_List then Listt.Increment_Last; Res := Listt.Last; else Res := List_Free_Chain; List_Free_Chain := List_Type (Listt.Table (Res).Chunk_Idx); end if; Listt.Table (Res) := List_Record'(First => No_Chunk_Index, Last => No_Chunk_Index, Chunk_Idx => Chunk_Len, Nbr => 0); return Res; end Create_List; procedure Destroy_List (List : in out List_Type) is C, Next_C : Chunk_Index_Type; begin if List = Null_List then return; end if; C := Listt.Table (List).First; while C /= No_Chunk_Index loop Next_C := Chunkt.Table (C).Next; Free_Chunk (C); C := Next_C; end loop; Listt.Table (List).Chunk_Idx := Nat32 (List_Free_Chain); List_Free_Chain := List; List := Null_List; end Destroy_List; procedure Initialize is begin Listt.Free; Listt.Init;