MCPcopy Create free account
hub / github.com/chipsalliance/Surelog / defaultPatternAssignment

Method defaultPatternAssignment

src/DesignCompile/CompileHelper.cpp:3213–3433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3211}
3212
3213UHDM::any* CompileHelper::defaultPatternAssignment(const UHDM::typespec* tps,
3214 UHDM::any* exp,
3215 DesignComponent* component,
3216 CompileDesign* compileDesign,
3217 ValuedComponentI* instance) {
3218 any* result = exp;
3219 if (tps == nullptr) {
3220 return result;
3221 }
3222 if (exp == nullptr) {
3223 return result;
3224 }
3225 UHDM::Serializer& s = compileDesign->getSerializer();
3226 FileSystem* const fileSystem = FileSystem::getInstance();
3227 bool invalidValue = false;
3228 int32_t ncsize = 32;
3229 range* r = nullptr;
3230 UHDM_OBJECT_TYPE ttps = tps->UhdmType();
3231 UHDM_OBJECT_TYPE baseType = uhdmint_typespec;
3232 if (ttps == uhdmlogic_typespec) {
3233 logic_typespec* lts = (logic_typespec*)tps;
3234 baseType = uhdmlogic_typespec;
3235 if (lts->Ranges() && !lts->Ranges()->empty()) {
3236 r = (*lts->Ranges())[0];
3237 }
3238 ncsize = 1;
3239 } else if (ttps == uhdmarray_typespec) {
3240 array_typespec* lts = (array_typespec*)tps;
3241 typespec* ets = nullptr;
3242 if (ref_typespec* rt = lts->Elem_typespec()) {
3243 ets = rt->Actual_typespec();
3244 }
3245 if (ets != nullptr) {
3246 baseType = ets->UhdmType();
3247 if (lts->Ranges() && !lts->Ranges()->empty()) {
3248 r = (*lts->Ranges())[0];
3249 }
3250 ncsize = Bits(
3251 ets, invalidValue, component, compileDesign, Reduce::Yes, instance,
3252 fileSystem->toPathId(ets->VpiFile(),
3253 compileDesign->getCompiler()->getSymbolTable()),
3254 ets->VpiLineNo(), false);
3255 }
3256 } else if (ttps == uhdmpacked_array_typespec) {
3257 packed_array_typespec* lts = (packed_array_typespec*)tps;
3258 typespec* ets = nullptr;
3259 if (ref_typespec* rt = lts->Elem_typespec()) {
3260 ets = rt->Actual_typespec();
3261 }
3262 if (ets != nullptr) {
3263 baseType = ets->UhdmType();
3264 if (lts->Ranges() && !lts->Ranges()->empty()) {
3265 r = (*lts->Ranges())[0];
3266 }
3267 ncsize = Bits(
3268 ets, invalidValue, component, compileDesign, Reduce::Yes, instance,
3269 fileSystem->toPathId(ets->VpiFile(),
3270 compileDesign->getCompiler()->getSymbolTable()),

Callers 4

collectParams_Method · 0.80
writeCont_assignMethod · 0.80
elab_parameters_Method · 0.80
high_conn_Method · 0.80

Calls 3

toPathIdMethod · 0.80
getSymbolTableMethod · 0.45
getCompilerMethod · 0.45

Tested by

no test coverage detected