diff --git a/common/place.cc b/common/place.cc index 0223c78f..b187b0f0 100644 --- a/common/place.cc +++ b/common/place.cc @@ -28,6 +28,7 @@ #include #include +#include "arch_place.h" #include "log.h" #include "place.h" @@ -102,7 +103,8 @@ void place_design(Design *design) while ((bi != blist.end()) && ((design->chip.getBelType(*bi) != bel_type || - !design->chip.checkBelAvail(*bi)))) + !design->chip.checkBelAvail(*bi)) || + !isValidBelForCell(design, cell, *bi))) bi++; if (bi == blist.end()) log_error("Too many \'%s\' used in design\n", diff --git a/dummy/arch_place.cc b/dummy/arch_place.cc new file mode 100644 index 00000000..e41b8cc3 --- /dev/null +++ b/dummy/arch_place.cc @@ -0,0 +1,25 @@ +/* + * nextpnr -- Next Generation Place and Route + * + * Copyright (C) 2018 Clifford Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "arch_place.h" + +bool isValidBelForCell(Design *design, CellInfo *cell, BelId bel) +{ + return true; +} diff --git a/dummy/arch_place.h b/dummy/arch_place.h new file mode 100644 index 00000000..446396e9 --- /dev/null +++ b/dummy/arch_place.h @@ -0,0 +1,32 @@ +/* + * nextpnr -- Next Generation Place and Route + * + * Copyright (C) 2018 Clifford Wolf + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef DUMMY_ARCH_PLACE_H +#define DUMMY_ARCH_PLACE_H + +#include "nextpnr.h" + +// Architecure-specific placement functions + +// Whether or not a given cell can be placed at a given Bel +// This is not intended for Bel type checks, but finer-grained constraints +// such as conflicting set/reset signals, etc +bool isValidBelForCell(Design *design, CellInfo *cell, BelId bel); + +#endif diff --git a/ice40/arch_place.h b/ice40/arch_place.h index 19b0635f..8f8ce806 100644 --- a/ice40/arch_place.h +++ b/ice40/arch_place.h @@ -26,6 +26,6 @@ // Whether or not a given cell can be placed at a given Bel // This is not intended for Bel type checks, but finer-grained constraints // such as conflicting set/reset signals, etc -bool isValidBelForCell(Chip *chip, CellInfo *cell, BelId bel); +bool isValidBelForCell(Design *design, CellInfo *cell, BelId bel); #endif