[{"data":1,"prerenderedAt":1247},["ShallowReactive",2],{"navigation_docs":3,"-tools-find-duplicate-constraints":340,"-tools-find-duplicate-constraints-surround":1242},[4,30,55,254,271,294,311],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","/getting-started","1.getting-started",[9,13,17,21,25],{"title":10,"path":11,"stem":12},"Introduction","/getting-started/introduction","1.getting-started/1.introduction",{"title":14,"path":15,"stem":16},"Platform","/getting-started/platforms","1.getting-started/2.platforms",{"title":18,"path":19,"stem":20},"Installation","/getting-started/installation","1.getting-started/3.installation",{"title":22,"path":23,"stem":24},"Licensing","/getting-started/licensing","1.getting-started/4.licensing",{"title":26,"path":27,"stem":28},"Quick Start","/getting-started/quick-start","1.getting-started/5.quick-start",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Features","/features","2.features",[35,39,43,47,51],{"title":36,"path":37,"stem":38},"Features Overview","/features/overview","2.features/1.overview",{"title":40,"path":41,"stem":42},"Code Quality Metrics","/features/code-quality-metrics","2.features/2.code-quality-metrics",{"title":44,"path":45,"stem":46},"Technical Debt Analysis","/features/technical-debt-analysis","2.features/3.technical-debt-analysis",{"title":48,"path":49,"stem":50},"Code Search","/features/code-search","2.features/4.code-search",{"title":52,"path":53,"stem":54},"Reports","/features/reports","2.features/5.reports",{"title":56,"path":57,"stem":58,"children":59,"page":29},"Tools","/tools","3.tools",[60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,142,148,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250],{"title":61,"path":62,"stem":63},"Tools Overview","/tools/overview","3.tools/1.overview",{"title":65,"path":66,"stem":67},"stellarion_get_symbol_info","/tools/get-symbol-info","3.tools/10.get-symbol-info",{"title":69,"path":70,"stem":71},"stellarion_symbol_search","/tools/symbol-search","3.tools/11.symbol-search",{"title":73,"path":74,"stem":75},"stellarion_get_callers","/tools/get-callers","3.tools/12.get-callers",{"title":77,"path":78,"stem":79},"stellarion_get_callees","/tools/get-callees","3.tools/13.get-callees",{"title":81,"path":82,"stem":83},"stellarion_get_detailed_symbol","/tools/get-detailed-symbol","3.tools/14.get-detailed-symbol",{"title":85,"path":86,"stem":87},"stellarion_find_by_imports","/tools/find-by-imports","3.tools/15.find-by-imports",{"title":89,"path":90,"stem":91},"stellarion_find_by_signature","/tools/find-by-signature","3.tools/16.find-by-signature",{"title":93,"path":94,"stem":95},"stellarion_find_entry_points","/tools/find-entry-points","3.tools/17.find-entry-points",{"title":97,"path":98,"stem":99},"stellarion_find_implementors","/tools/find-implementors","3.tools/18.find-implementors",{"title":101,"path":102,"stem":103},"stellarion_traverse_graph","/tools/traverse-graph","3.tools/19.traverse-graph",{"title":105,"path":106,"stem":107},"stellarion_get_ai_context","/tools/get-ai-context","3.tools/2.get-ai-context",{"title":109,"path":110,"stem":111},"stellarion_memory_store","/tools/memory-store","3.tools/20.memory-store",{"title":113,"path":114,"stem":115},"stellarion_memory_search","/tools/memory-search","3.tools/21.memory-search",{"title":117,"path":118,"stem":119},"stellarion_memory_get","/tools/memory-get","3.tools/22.memory-get",{"title":121,"path":122,"stem":123},"stellarion_memory_context","/tools/memory-context","3.tools/23.memory-context",{"title":125,"path":126,"stem":127},"stellarion_memory_invalidate","/tools/memory-invalidate","3.tools/24.memory-invalidate",{"title":129,"path":130,"stem":131},"stellarion_memory_list","/tools/memory-list","3.tools/25.memory-list",{"title":133,"path":134,"stem":135},"stellarion_memory_stats","/tools/memory-stats","3.tools/26.memory-stats",{"title":137,"path":138,"stem":139,"children":140},"stellarion_reindex_workspace","/tools/reindex-workspace","3.tools/27.reindex-workspace",[141],{"title":137,"path":138,"stem":139},{"title":143,"path":144,"stem":145,"children":146},"stellarion_index_files","/tools/index-files","3.tools/28.index-files",[147],{"title":143,"path":144,"stem":145},{"title":149,"path":150,"stem":151,"children":152},"stellarion_index_directory","/tools/index-directory","3.tools/29.index-directory",[153],{"title":149,"path":150,"stem":151},{"title":155,"path":156,"stem":157},"stellarion_get_edit_context","/tools/get-edit-context","3.tools/3.get-edit-context",{"title":159,"path":160,"stem":161},"stellarion_scan_security [Pro]","/tools/scan-security","3.tools/30.scan-security",{"title":163,"path":164,"stem":165},"stellarion_analyze_coupling [Pro]","/tools/analyze-coupling","3.tools/31.analyze-coupling",{"title":167,"path":168,"stem":169},"stellarion_find_unused_code [Pro]","/tools/find-unused-code","3.tools/32.find-unused-code",{"title":171,"path":172,"stem":173},"stellarion_codebase_health [Pro]","/tools/codebase-health","3.tools/33.codebase-health",{"title":175,"path":176,"stem":177},"stellarion_tech_debt_report [Pro]","/tools/tech-debt-report","3.tools/34.tech-debt-report",{"title":179,"path":180,"stem":181},"stellarion_assess_change_risk [Pro]","/tools/assess-change-risk","3.tools/35.assess-change-risk",{"title":183,"path":184,"stem":185},"stellarion_dependency_drift [Pro]","/tools/dependency-drift","3.tools/36.dependency-drift",{"title":187,"path":188,"stem":189},"stellarion_api_surface [Pro]","/tools/api-surface","3.tools/37.api-surface",{"title":191,"path":192,"stem":193},"stellarion_find_duplicates [Pro]","/tools/find-duplicates","3.tools/38.find-duplicates",{"title":195,"path":196,"stem":197},"stellarion_find_similar [Pro]","/tools/find-similar","3.tools/39.find-similar",{"title":199,"path":200,"stem":201},"stellarion_get_curated_context","/tools/get-curated-context","3.tools/4.get-curated-context",{"title":203,"path":204,"stem":205},"stellarion_cluster_symbols [Pro]","/tools/cluster-symbols","3.tools/40.cluster-symbols",{"title":207,"path":208,"stem":209},"stellarion_compare_symbols [Pro]","/tools/compare-symbols","3.tools/41.compare-symbols",{"title":211,"path":212,"stem":213},"stellarion_mine_git_history [Pro]","/tools/mine-git-history","3.tools/42.mine-git-history",{"title":215,"path":216,"stem":217},"stellarion_mine_git_history_for_file [Pro]","/tools/mine-git-history-for-file","3.tools/43.mine-git-history-for-file",{"title":219,"path":220,"stem":221},"stellarion_search_git_history [Pro]","/tools/search-git-history","3.tools/44.search-git-history",{"title":223,"path":224,"stem":225},"stellarion_find_eda_calls [Pro · EDA]","/tools/find-eda-calls","3.tools/45.find-eda-calls",{"title":227,"path":228,"stem":229},"stellarion_get_flow_graph [Pro · EDA]","/tools/get-flow-graph","3.tools/46.get-flow-graph",{"title":231,"path":232,"stem":233},"stellarion_find_duplicate_constraints [Pro · EDA]","/tools/find-duplicate-constraints","3.tools/47.find-duplicate-constraints",{"title":235,"path":236,"stem":237},"stellarion_analyze_impact","/tools/analyze-impact","3.tools/5.analyze-impact",{"title":239,"path":240,"stem":241},"stellarion_analyze_complexity","/tools/analyze-complexity","3.tools/6.analyze-complexity",{"title":243,"path":244,"stem":245},"stellarion_get_call_graph","/tools/get-call-graph","3.tools/7.get-call-graph",{"title":247,"path":248,"stem":249},"stellarion_get_dependency_graph","/tools/get-dependency-graph","3.tools/8.get-dependency-graph",{"title":251,"path":252,"stem":253},"stellarion_find_related_tests","/tools/find-related-tests","3.tools/9.find-related-tests",{"title":255,"path":256,"stem":257,"children":258,"page":29},"Integrations","/integrations","4.integrations",[259,263,267],{"title":260,"path":261,"stem":262},"Claude Code","/integrations/claude-code","4.integrations/1.claude-code",{"title":264,"path":265,"stem":266},"Cursor","/integrations/cursor","4.integrations/2.cursor",{"title":268,"path":269,"stem":270},"Other MCP Clients","/integrations/other-mcp-clients","4.integrations/3.other-mcp-clients",{"title":272,"path":273,"stem":274,"children":275,"page":29},"Guides","/guides","5.guides",[276,282,286,290],{"title":277,"path":278,"stem":279,"children":280},"Indexing Your Project","/guides/indexing-your-project","5.guides/1.indexing-your-project",[281],{"title":277,"path":278,"stem":279},{"title":283,"path":284,"stem":285},"Improving Code Quality","/guides/improving-code-quality","5.guides/2.improving-code-quality",{"title":287,"path":288,"stem":289},"Reducing Technical Debt","/guides/reducing-technical-debt","5.guides/3.reducing-technical-debt",{"title":291,"path":292,"stem":293},"Slash Commands","/guides/slash-commands","5.guides/4.slash-commands",{"title":295,"path":296,"stem":297,"children":298,"page":29},"Reference","/reference","6.reference",[299,303,307],{"title":300,"path":301,"stem":302},"CLI Commands","/reference/cli-commands","6.reference/1.cli-commands",{"title":304,"path":305,"stem":306},"Environment Variables","/reference/environment-variables","6.reference/2.environment-variables",{"title":308,"path":309,"stem":310},"Troubleshooting","/reference/troubleshooting","6.reference/3.troubleshooting",{"title":312,"path":313,"stem":314,"children":315,"page":29},"Quality","/quality","7.quality",[316,320,324,328,332,336],{"title":317,"path":318,"stem":319},"Code Quality Metrics Overview","/quality/stellarion_quality_metrics","7.quality/1.Stellarion_Quality_Metrics",{"title":321,"path":322,"stem":323},"Cognitive Complexity","/quality/cognitive-complexity","7.quality/2.cognitive-complexity",{"title":325,"path":326,"stem":327},"Cyclomatic Complexity","/quality/cyclomatic-complexity","7.quality/3.cyclomatic-complexity",{"title":329,"path":330,"stem":331},"Maintainability Index","/quality/maintainability","7.quality/4.maintainability",{"title":333,"path":334,"stem":335},"Circular Dependencies","/quality/circular-dependencies","7.quality/5.circular-dependencies",{"title":337,"path":338,"stem":339},"Unused Code Detection","/quality/unused-code","7.quality/6.unused-code",{"id":341,"title":231,"body":342,"description":1235,"extension":1236,"links":1237,"meta":1238,"navigation":1239,"path":232,"seo":1240,"stem":233,"__hash__":1241},"docs/3.tools/47.find-duplicate-constraints.md",{"type":343,"value":344,"toc":1219},"minimark",[345,364,397,402,428,432,555,559,564,574,581,585,591,598,602,608,614,618,624,629,633,639,644,648,1039,1044,1048,1096,1100,1111,1139,1142,1162,1166,1215],[346,347,349,350,354,355,359,360,363],"callout",{"type":348},"info","This is a Pro tool that requires ",[351,352,353],"strong",{},"EDA mode"," (",[356,357,358],"code",{},"--mode eda","). It uses the ",[356,361,362],{},"Eda"," license feature; a 180-day free trial starts automatically.",[365,366,367,368,372,373,376,377,380,381,384,385,388,389,392,393,396],"p",{},"Finds places where the same constraint key is set in multiple sites — and flags the cases where the ",[369,370,371],"em",{},"values"," diverge, which is config drift. Built on top of the Phase 4A argument extractor: every EDA call carries its ",[356,374,375],{},"key"," (e.g. the ",[356,378,379],{},"-name"," arg of ",[356,382,383],{},"set_global_assignment","), ",[356,386,387],{},"value",", and ",[356,390,391],{},"target"," (the ",[356,394,395],{},"-to"," arg).",[398,399,401],"h2",{"id":400},"when-to-use","When to Use",[403,404,405,412,415,418,421],"ul",{},[406,407,408,409,411],"li",{},"Pre-merge — confirm your branch hasn't introduced contradictory ",[356,410,383],{}," values",[406,413,414],{},"Quarterly audit — find Quartus settings that have drifted across files (FPGA-family forks, copy-paste branches)",[406,416,417],{},"Before centralizing constraints — measure how many sites repeat each key",[406,419,420],{},"After a multi-branch merge — surface conflicts the merge silently kept one side of",[406,422,423,424,427],{},"For Qsys component renames — detect duplicate ",[356,425,426],{},"set_module_property NAME"," declarations",[398,429,431],{"id":430},"parameters","Parameters",[433,434,435,457],"table",{},[436,437,438],"thead",{},[439,440,441,445,448,451,454],"tr",{},[442,443,444],"th",{},"Parameter",[442,446,447],{},"Type",[442,449,450],{},"Required",[442,452,453],{},"Default",[442,455,456],{},"Description",[458,459,460,480,500,518,535],"tbody",{},[439,461,462,468,471,474,477],{},[463,464,465],"td",{},[356,466,467],{},"filePattern",[463,469,470],{},"string",[463,472,473],{},"No",[463,475,476],{},"—",[463,478,479],{},"Substring match on file path",[439,481,482,487,489,491,493],{},[463,483,484],{},[356,485,486],{},"category",[463,488,470],{},[463,490,473],{},[463,492,476],{},[463,494,495,496,499],{},"Filter to a single EDA category (e.g. ",[356,497,498],{},"quartus_assignment",")",[439,501,502,507,510,512,515],{},[463,503,504],{},[356,505,506],{},"minDuplicates",[463,508,509],{},"number",[463,511,473],{},[463,513,514],{},"2",[463,516,517],{},"Only report keys repeated this many times or more",[439,519,520,525,527,529,532],{},[463,521,522],{},[356,523,524],{},"limit",[463,526,509],{},[463,528,473],{},[463,530,531],{},"50",[463,533,534],{},"Maximum constraint groups to return",[439,536,537,542,545,547,552],{},[463,538,539],{},[356,540,541],{},"onlyTrueConflicts",[463,543,544],{},"boolean",[463,546,473],{},[463,548,549],{},[356,550,551],{},"false",[463,553,554],{},"Drop namespace patterns and same-value boilerplate; keep only groups where some values repeat AND others differ — the real drift signal",[398,556,558],{"id":557},"examples","Examples",[560,561,563],"h3",{"id":562},"all-duplicate-constraint-groups","All duplicate constraint groups",[565,566,571],"pre",{"className":567,"code":569,"language":570},[568],"language-text","Show me every constraint that's set in multiple places.\n","text",[356,572,569],{"__ignoreMap":573},"",[365,575,576,577,580],{},"Calls with defaults. Returns groups by ",[356,578,579],{},"(category, key)"," with all occurrences.",[560,582,584],{"id":583},"real-drift-only","Real drift only",[565,586,589],{"className":587,"code":588,"language":570},[568],"Find Quartus config drift — same key, different values.\n",[356,590,588],{"__ignoreMap":573},[365,592,593,594,597],{},"Sets ",[356,595,596],{},"onlyTrueConflicts: true",". Drops namespace patterns (every value distinct = unique-by-design) and pure boilerplate (every value identical = not drift). Keeps only mixed groups — these are the high-signal items.",[560,599,601],{"id":600},"quartus-assignments-only","Quartus assignments only",[565,603,606],{"className":604,"code":605,"language":570},[568],"Just show me set_global_assignment conflicts.\n",[356,607,605],{"__ignoreMap":573},[365,609,593,610,613],{},[356,611,612],{},"category: \"quartus_assignment\"",".",[560,615,617],{"id":616},"scoped-to-a-directory","Scoped to a directory",[565,619,622],{"className":620,"code":621,"language":570},[568],"Find drift inside scripts/common/syn.\n",[356,623,621],{"__ignoreMap":573},[365,625,593,626,613],{},[356,627,628],{},"filePattern: \"scripts/common/syn\"",[560,630,632],{"id":631},"threshold-to-top-of-list-items","Threshold to top-of-list items",[565,634,637],{"className":635,"code":636,"language":570},[568],"Show only keys repeated 5+ times.\n",[356,638,636],{"__ignoreMap":573},[365,640,593,641,613],{},[356,642,643],{},"minDuplicates: 5",[398,645,647],{"id":646},"output-format","Output Format",[565,649,653],{"className":650,"code":651,"language":652,"meta":573,"style":573},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"total_keys_examined\": 306,\n  \"duplicate_count\": 140,\n  \"conflicting_count\": 111,\n  \"duplicates\": [\n    {\n      \"category\": \"quartus_assignment\",\n      \"key\": \"FAMILY\",\n      \"occurrences\": 12,\n      \"distinct_values\": 2,\n      \"conflicting\": true,\n      \"instances\": [\n        { \"file\": \"...\", \"caller\": \"...\", \"line\": 10, \"value\": \"Stratix 10\", \"target\": null },\n        { \"file\": \"...\", \"caller\": \"...\", \"line\": 22, \"value\": \"Agilex\",     \"target\": null }\n      ]\n    }\n  ]\n}\n","json",[356,654,655,664,687,704,721,736,742,765,785,802,819,834,848,934,1015,1021,1027,1033],{"__ignoreMap":573},[656,657,660],"span",{"class":658,"line":659},"line",1,[656,661,663],{"class":662},"sMK4o","{\n",[656,665,667,670,674,677,680,684],{"class":658,"line":666},2,[656,668,669],{"class":662},"  \"",[656,671,673],{"class":672},"spNyl","total_keys_examined",[656,675,676],{"class":662},"\"",[656,678,679],{"class":662},":",[656,681,683],{"class":682},"sbssI"," 306",[656,685,686],{"class":662},",\n",[656,688,690,692,695,697,699,702],{"class":658,"line":689},3,[656,691,669],{"class":662},[656,693,694],{"class":672},"duplicate_count",[656,696,676],{"class":662},[656,698,679],{"class":662},[656,700,701],{"class":682}," 140",[656,703,686],{"class":662},[656,705,707,709,712,714,716,719],{"class":658,"line":706},4,[656,708,669],{"class":662},[656,710,711],{"class":672},"conflicting_count",[656,713,676],{"class":662},[656,715,679],{"class":662},[656,717,718],{"class":682}," 111",[656,720,686],{"class":662},[656,722,724,726,729,731,733],{"class":658,"line":723},5,[656,725,669],{"class":662},[656,727,728],{"class":672},"duplicates",[656,730,676],{"class":662},[656,732,679],{"class":662},[656,734,735],{"class":662}," [\n",[656,737,739],{"class":658,"line":738},6,[656,740,741],{"class":662},"    {\n",[656,743,745,748,751,753,755,758,761,763],{"class":658,"line":744},7,[656,746,747],{"class":662},"      \"",[656,749,486],{"class":750},"sBMFI",[656,752,676],{"class":662},[656,754,679],{"class":662},[656,756,757],{"class":662}," \"",[656,759,498],{"class":760},"sfazB",[656,762,676],{"class":662},[656,764,686],{"class":662},[656,766,768,770,772,774,776,778,781,783],{"class":658,"line":767},8,[656,769,747],{"class":662},[656,771,375],{"class":750},[656,773,676],{"class":662},[656,775,679],{"class":662},[656,777,757],{"class":662},[656,779,780],{"class":760},"FAMILY",[656,782,676],{"class":662},[656,784,686],{"class":662},[656,786,788,790,793,795,797,800],{"class":658,"line":787},9,[656,789,747],{"class":662},[656,791,792],{"class":750},"occurrences",[656,794,676],{"class":662},[656,796,679],{"class":662},[656,798,799],{"class":682}," 12",[656,801,686],{"class":662},[656,803,805,807,810,812,814,817],{"class":658,"line":804},10,[656,806,747],{"class":662},[656,808,809],{"class":750},"distinct_values",[656,811,676],{"class":662},[656,813,679],{"class":662},[656,815,816],{"class":682}," 2",[656,818,686],{"class":662},[656,820,822,824,827,829,831],{"class":658,"line":821},11,[656,823,747],{"class":662},[656,825,826],{"class":750},"conflicting",[656,828,676],{"class":662},[656,830,679],{"class":662},[656,832,833],{"class":662}," true,\n",[656,835,837,839,842,844,846],{"class":658,"line":836},12,[656,838,747],{"class":662},[656,840,841],{"class":750},"instances",[656,843,676],{"class":662},[656,845,679],{"class":662},[656,847,735],{"class":662},[656,849,851,854,856,859,861,863,865,868,870,873,875,878,880,882,884,886,888,890,892,894,896,898,901,903,905,907,909,911,913,916,918,920,922,924,926,928,931],{"class":658,"line":850},13,[656,852,853],{"class":662},"        {",[656,855,757],{"class":662},[656,857,858],{"class":682},"file",[656,860,676],{"class":662},[656,862,679],{"class":662},[656,864,757],{"class":662},[656,866,867],{"class":760},"...",[656,869,676],{"class":662},[656,871,872],{"class":662},",",[656,874,757],{"class":662},[656,876,877],{"class":682},"caller",[656,879,676],{"class":662},[656,881,679],{"class":662},[656,883,757],{"class":662},[656,885,867],{"class":760},[656,887,676],{"class":662},[656,889,872],{"class":662},[656,891,757],{"class":662},[656,893,658],{"class":682},[656,895,676],{"class":662},[656,897,679],{"class":662},[656,899,900],{"class":682}," 10",[656,902,872],{"class":662},[656,904,757],{"class":662},[656,906,387],{"class":682},[656,908,676],{"class":662},[656,910,679],{"class":662},[656,912,757],{"class":662},[656,914,915],{"class":760},"Stratix 10",[656,917,676],{"class":662},[656,919,872],{"class":662},[656,921,757],{"class":662},[656,923,391],{"class":682},[656,925,676],{"class":662},[656,927,679],{"class":662},[656,929,930],{"class":662}," null",[656,932,933],{"class":662}," },\n",[656,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977,979,982,984,986,988,990,992,994,997,999,1001,1004,1006,1008,1010,1012],{"class":658,"line":936},14,[656,938,853],{"class":662},[656,940,757],{"class":662},[656,942,858],{"class":682},[656,944,676],{"class":662},[656,946,679],{"class":662},[656,948,757],{"class":662},[656,950,867],{"class":760},[656,952,676],{"class":662},[656,954,872],{"class":662},[656,956,757],{"class":662},[656,958,877],{"class":682},[656,960,676],{"class":662},[656,962,679],{"class":662},[656,964,757],{"class":662},[656,966,867],{"class":760},[656,968,676],{"class":662},[656,970,872],{"class":662},[656,972,757],{"class":662},[656,974,658],{"class":682},[656,976,676],{"class":662},[656,978,679],{"class":662},[656,980,981],{"class":682}," 22",[656,983,872],{"class":662},[656,985,757],{"class":662},[656,987,387],{"class":682},[656,989,676],{"class":662},[656,991,679],{"class":662},[656,993,757],{"class":662},[656,995,996],{"class":760},"Agilex",[656,998,676],{"class":662},[656,1000,872],{"class":662},[656,1002,1003],{"class":662},"     \"",[656,1005,391],{"class":682},[656,1007,676],{"class":662},[656,1009,679],{"class":662},[656,1011,930],{"class":662},[656,1013,1014],{"class":662}," }\n",[656,1016,1018],{"class":658,"line":1017},15,[656,1019,1020],{"class":662},"      ]\n",[656,1022,1024],{"class":658,"line":1023},16,[656,1025,1026],{"class":662},"    }\n",[656,1028,1030],{"class":658,"line":1029},17,[656,1031,1032],{"class":662},"  ]\n",[656,1034,1036],{"class":658,"line":1035},18,[656,1037,1038],{"class":662},"}\n",[365,1040,1041,1043],{},[356,1042,728],{}," is sorted with conflicting groups first, then by occurrence count.",[560,1045,1047],{"id":1046},"reading-the-output","Reading the output",[403,1049,1050,1065,1084],{},[406,1051,1052,1057,1058,1061,1062,1064],{},[351,1053,1054],{},[356,1055,1056],{},"occurrences == distinct_values"," — every site has a unique value. Usually a ",[369,1059,1060],{},"namespace"," pattern (auto-generated unique names). Use ",[356,1063,596],{}," to filter these out.",[406,1066,1067,1076,1077,1080,1081],{},[351,1068,1069,1072,1073],{},[356,1070,1071],{},"occurrences > distinct_values"," AND ",[356,1074,1075],{},"conflicting: true"," — real drift. The same key has both repeated values ",[369,1078,1079],{},"and"," divergent values. ",[351,1082,1083],{},"Refactor candidate.",[406,1085,1086,1091,1092,1095],{},[351,1087,1088],{},[356,1089,1090],{},"distinct_values == 1"," (with ",[356,1093,1094],{},"conflicting: false",") — boilerplate. Same key, same value across many sites. Usually fine; can be a candidate for a shared helper.",[398,1097,1099],{"id":1098},"empirical-baseline-ofs-fim-common","Empirical baseline (OFS-fim-common)",[365,1101,1102,1103,1110],{},"Running on the ",[1104,1105,1109],"a",{"href":1106,"rel":1107},"https://github.com/OFS/ofs-fim-common",[1108],"nofollow","OFS FIM Common"," Quartus codebase as a reference:",[403,1112,1113,1118,1127],{},[406,1114,1115],{},[351,1116,1117],{},"306 keys examined",[406,1119,1120,1123,1124],{},[351,1121,1122],{},"140 duplicate groups"," at ",[356,1125,1126],{},"minDuplicates: 2",[406,1128,1129,1132,1133,1136,1137],{},[351,1130,1131],{},"111 conflicting"," at default; ",[351,1134,1135],{},"41 real drift groups"," with ",[356,1138,596],{},[365,1140,1141],{},"Notable finds in that corpus:",[403,1143,1144,1150,1156],{},[406,1145,1146,1149],{},[356,1147,1148],{},"qsys_parameter / DATA_W"," — 45 occurrences, 11 distinct values (AXI bus-width drift)",[406,1151,1152,1155],{},[356,1153,1154],{},"quartus_assignment / host_if.m0"," — 24 occurrences, 12 distinct values",[406,1157,1158,1161],{},[356,1159,1160],{},"qsys_fileset / QUARTUS_SYNTH"," — 30 occurrences, 3 distinct synth-fileset configs",[398,1163,1165],{"id":1164},"tips","Tips",[403,1167,1168,1174,1187,1202,1205],{},[406,1169,1170,1171,1173],{},"Always start with ",[356,1172,596],{},". The default view is exhaustive but noisy.",[406,1175,1176,1177,1179,1180,388,1183,1186],{},"The most actionable categories are ",[356,1178,498],{},", ",[356,1181,1182],{},"qsys_module",[356,1184,1185],{},"quartus_parameter"," — each has well-defined keys.",[406,1188,1189,1190,1195,1196,1201],{},"Pair with ",[1104,1191,1192],{"href":224},[356,1193,1194],{},"stellarion_find_eda_calls"," and ",[1104,1197,1198],{"href":228},[356,1199,1200],{},"stellarion_get_flow_graph"," for the full EDA architecture picture.",[406,1203,1204],{},"The output is structured — feed it into a refactor planner that emits a \"centralize these N keys into a shared parameter file\" PR.",[406,1206,1207,1208,1211,1212,1214],{},"Use the ",[356,1209,1210],{},"/eda-drift-check"," slash command (see ",[1104,1213,291],{"href":292},") for an opinionated triage report.",[1216,1217,1218],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":573,"searchDepth":666,"depth":666,"links":1220},[1221,1222,1223,1230,1233,1234],{"id":400,"depth":666,"text":401},{"id":430,"depth":666,"text":431},{"id":557,"depth":666,"text":558,"children":1224},[1225,1226,1227,1228,1229],{"id":562,"depth":689,"text":563},{"id":583,"depth":689,"text":584},{"id":600,"depth":689,"text":601},{"id":616,"depth":689,"text":617},{"id":631,"depth":689,"text":632},{"id":646,"depth":666,"text":647,"children":1231},[1232],{"id":1046,"depth":689,"text":1047},{"id":1098,"depth":666,"text":1099},{"id":1164,"depth":666,"text":1165},"Detect duplicate Quartus / Qsys constraint keys with conflicting values","md",null,{},true,{"title":231,"description":1235},"v7BxmO1-KxzDOHP_ikPH-CceWtT93oErG_EZfIqnbfg",[1243,1245],{"title":227,"path":228,"stem":229,"description":1244,"children":-1},"Build the EDA flow graph — stages, members, and cross-stage transitions",{"title":235,"path":236,"stem":237,"description":1246,"children":-1},"Predict the blast radius of code changes before making them",1777612940860]