Hallo,
ich wollte probeweise folgenden Code synthetisieren, dies ist mir jedoch
nicht möglich. Warum ist das so? Die Warnung verstehe ich und ist auch
richtig so, aber genau das möchte ich doch erreichen, eine Loop?
1
WARNING:Xst:2170 - Unit clock : the following signal(s) form a combinatorial loop: clk.
2
WARNING:MapLib:701 - Signal clk connected to top level port clk has been
Das verstehe ich auch nicht und rechne mit einer Einschränkung des
Syntheseprogramms. Was passiert denn, wenn du mehrere Stufen einbaust,
also das Signal nicht direkt, sondern über zwei Zwischensignale
rückkoppelst?
Jörg schrieb:> clk_i <= not clk_i;> clk <= clk_i;
was soll die erste Zuweisung ohne Takt? Ein Signal kann aus logischer
Sicht nicht seinem interiterten Signa zugewiesen werden. Macht keinen
Sinn.
und was soll die zweite Zuweisung ohne Takt? Damit wäre clk immer
identisch mit clk_i
da hat jemand was Grundsätzliches nicht verstanden
Male Dir mal das Schaltwerk auf und dann beschreibe es.
Wltbester FPGA-Ponog schrieb im Beitrag #5435212:
> Male Dir mal das Schaltwerk auf und dann beschreibe es.
Ein Nicht-Gatter, dessen Ausgang auf den (eigenen) Eingang und auf einen
Ausgangspin geschaltet ist. Warum soll das nicht gehen?
Oder wie würdest du das beschreiben?
Du könntest auch mal probieren, es in einem Prozess zu beschreiben.
Eigentlich sollte es auch so gehen, aber das ist ein ziemlicher
Grenzfall, mit dem das Syntheseprogramm nicht klarkommt.
Dussel schrieb:> Ein Nicht-Gatter, dessen Ausgang auf den (eigenen) Eingang und auf einen> Ausgangspin geschaltet ist. Warum soll das nicht gehen?
Weils eine kombinatorische Schleife gibt...
Kombinatorische Schleifen sind im Umfeld von FPGAs in der Regel Unsinn
und/oder "Programmierfehler", und darum bemängelt das Synthesewerkzeug
sowas.
> Oder wie würdest du das beschreiben?
Bestenfalls als Ringoszillator. Den kann man tatsächlich aufbauen, das
hat Lothar Miller in seinem Blog mal beschrieben.
Nase schrieb:> Dussel schrieb:>> Ein Nicht-Gatter, dessen Ausgang auf den (eigenen) Eingang und auf einen>> Ausgangspin geschaltet ist. Warum soll das nicht gehen?> Weils eine kombinatorische Schleife gibt...> Kombinatorische Schleifen sind im Umfeld von FPGAs in der Regel Unsinn> und/oder "Programmierfehler", und darum bemängelt das Synthesewerkzeug> sowas.
In der Regel. Hier ist aber nach der Ausnahme von der Regel gefragt. Die
Frage ist ja nicht, warum es eine Warnung gibt, sondern warum das nicht
synthestisiert werden kann.
Nase schrieb:>> Oder wie würdest du das beschreiben?> Bestenfalls als Ringoszillator. Den kann man tatsächlich aufbauen, das> hat Lothar Miller in seinem Blog mal beschrieben.
Ich weiß. Aber genau das ist ja hier gegeben. Ein Ringoszillator mit
einem Gatter.
Dussel schrieb:> Die> Frage ist ja nicht, warum es eine Warnung gibt, sondern warum das nicht> synthestisiert werden kann.
Es gibt sicher mehr als die beiden genanten Warnings, eine der
nichtgenannten weist sicher auf die Ursache, wahrscheinlich "dead code
elimination" oder ähnliches. Schalt mal die dafür verantwortliche Option
aus.
Was auch helfen könnte, wäre die manuelle Instanziierung eines Negators
nresp. LUT, die fasst der XST eher nicht an.
https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/spartan6_hdl.pdf
Natürlich geht das. Aus Sicht vom XST macht das aber keinen Sinn und
wird wegoptimiert. Soll es trotzdem da bleiben, musst du das nochmal
explizit dazuschreiben mit der KEEP Anweisung.
Jörg schrieb:> ich wollte probeweise folgenden Code synthetisieren, dies ist mir jedoch> nicht möglich.
Stichwort dazu: "kombinatorische Schleife" (siehe die Fehlermeldung).
In der Regel machen das nur Anfänger. Dann nennt man das " Fehler".
Wenn das ein Profi macht dann geht das und nennt sich (wie schon
erwähnt) "Ringoszillator".
http://www.lothar-miller.de/s9y/categories/36-Kombinatorische-Schleifehttp://www.lothar-miller.de/s9y/categories/29-Ringoszillator
Und jetzt die Frage schlechthin: warum willst du sowas machen? Was soll
das werden? Welche Hardware beschreibst du damit?
Ich wollte es jetzt mal wissen und habe es mit Quartus ausprobiert.
1
libraryIEEE;
2
useieee.std_logic_1164.all;
3
4
entityOszillatoris
5
port(clock:outstd_ulogic);
6
endentity;
7
8
architecturearchofOszillatoris
9
signalclock_int:std_ulogic;
10
begin
11
clock_int<=notclock_int;
12
clock<=clock_int;
13
endarchitecture;
Wie erwartet gab es eine Warnung wegen der kombinatorischen Schleife.
Rausgekommen ist das Angehängte.
Ich weiß nicht, was das andere im Post-Fit-Plan ist, aber man erkennt,
dass die Schleife noch wie gewünscht vorhanden ist. Anscheinend ist
Intel mit den Programmen weiter als Xilinx (mit den Datenblättern leider
nicht).
Dussel schrieb:> Anscheinend ist> Intel mit den Programmen weiter als Xilinx (mit den Datenblättern leider> nicht).
Quatsch, der TO ist hinterher mit seiner Fachkunde bezüglich Bedienung
der Xilinx-tools und wichtigsten Attribut wie KEEP.
Es wurde doch schon vor Jahren gezeigt, wie so ein ring oscillator
korrekt beschruiben wird.
http://www.lothar-miller.de/s9y/categories/29-Ringoszillator
Dussel schrieb:> Wie erwartet gab es eine Warnung wegen der kombinatorischen Schleife.> Rausgekommen ist das Angehängte.> Ich weiß nicht, was das andere im Post-Fit-Plan ist, aber man erkennt,> dass die Schleife noch wie gewünscht vorhanden ist. Anscheinend ist> Intel mit den Programmen weiter als Xilinx (mit den Datenblättern leider> nicht).
Du kannst aber auch für den Xilinx Fall mal die Fehlermeldung posten die
zum Abbruch deiner Synthese führt, die Warnung macht das nämlich nicht.
Und sonst können wir auch nicht riechen was das Tool macht, der Hinweis
mit der Keep Anweisung ist aber der richtige Weg wie Lothar in seinem
Beispiel schön vorstellt.
Wenn Quartus dir das angehängte ausspuckt würde ich sofort Vorsichtig
werden und die Software so nicht benutzen. Eine kombinatorische Schleife
die ohne explizite Anweisung übernommen wird ist in 99% der Fälle ein
Fehler.
Und jetzt die andere Software "nicht so weit" zu schimpfen weil sie
etwas eigentlich fatales macht was die andere nicht ohne explizite
Direktive erzeugt ist doch auch eine etwas zu kurz gekommene
Schlussfolgerung, oder?
Dussel schrieb:> Anscheinend ist Intel mit den Programmen weiter als Xilinx (mit den> Datenblättern leider nicht).
Das wissen wir derzeit noch nicht, denn wie gesagt: im ersten Post sehen
wir nur 2 Warnungen. Und wegen einer Warnung wird keine Implementierung
abgebrochen. Der "Fehler" muss also nach der Synthese auftreten.
Jörg schrieb:> ich wollte probeweise folgenden Code synthetisieren, dies ist mir jedoch> nicht möglich. Warum ist das so?
Selbst wenn du diesen einstufigen Ringoszillator implementiert bekommst,
ist der viel (sehr viel!) zu schnell, um irgendwas damit anfangen zu
können. Da schwingt dann im FPGA eine Logikzelle mit Frequenzen über
1GHz vor sich hin. Diesen "Takt" bekommst du niemals nach außen und
vermutlich funktioniert das Routen im FPGA drin schon nicht brauchbar
oder zuverlässig. Aus diesem Grund nehme ich mehrstufige Logikketten.
Cle schrieb:> Dussel schrieb:>> Wie erwartet gab es eine Warnung wegen der kombinatorischen Schleife.>> Rausgekommen ist das Angehängte.>> Ich weiß nicht, was das andere im Post-Fit-Plan ist, aber man erkennt,>> dass die Schleife noch wie gewünscht vorhanden ist. Anscheinend ist>> Intel mit den Programmen weiter als Xilinx (mit den Datenblättern leider>> nicht).>> Du kannst aber auch für den Xilinx Fall mal die Fehlermeldung posten die> zum Abbruch deiner Synthese führt, die Warnung macht das nämlich nicht.
Ich habe schon Quartus und Libero drauf, da werde ich nicht für so ein
theoretisches Experiment noch Vivado installieren.
Cle schrieb:> Wenn Quartus dir das angehängte ausspuckt würde ich sofort Vorsichtig> werden und die Software so nicht benutzen.
Vorsichtig sollte man bei Logikbeschreibungen immer sein. Dazu gehört
auch, die Warnungen zu beachten. Dann fällt auch auf, dass es die
kombinatorische Schleife gibt und man kann entscheiden, ob das gewollt
ist.
Cle schrieb:> Und jetzt die andere Software "nicht so weit" zu schimpfen weil sie> etwas eigentlich fatales macht was die andere nicht ohne explizite> Direktive erzeugt ist doch auch eine etwas zu kurz gekommene> Schlussfolgerung, oder?
Kann es sein, dass du da was vertauscht hast? ;-)
Wir reden hier von professionellen Programmen. Die können man
nachfragen, ob man das wirklich so will, aber ich finde, die sollten
einem nicht verbieten (oder nur auf speziellen Antrag erlauben), etwas
zu tun.
Lothar M. schrieb:> Dussel schrieb:>> Anscheinend ist Intel mit den Programmen weiter als Xilinx (mit den>> Datenblättern leider nicht).> Das wissen wir derzeit noch nicht, denn wie gesagt: im ersten Post sehen> wir nur 2 Warnungen. Und wegen einer Warnung wird keine Implementierung> abgebrochen. Der "Fehler" muss also nach der Synthese auftreten.
Stimmt. Da muss ich zugeben, dass ich das verwechselt habe.
Dussel schrieb:> Ein Nicht-Gatter, dessen Ausgang auf den (eigenen) Eingang und auf einen> Ausgangspin geschaltet ist. Warum soll das nicht gehen?> Oder wie würdest du das beschreiben?
Das macht aber keinen Sinn! Das ist eine analoge Rückkopplung, die
schwingt und zwar mit undefinierter Frequenz. Das geht nur in der
Simulation, weil dann in jedem Simuschritt was umklappt. In der Realität
braucht es einen Takt, der rückgekoppelte Signale umklappen lässt. Das
sollte eigentlich klar sind.
Dieser Takt kann natürlich NICHT das Signal selber sein!
Leute, lasst die Finger von FPGAs, wenn ihr das nicht versteht!
Weltbester FPGA-Pongo schrieb im Beitrag #5435479:
> Dieser Takt kann natürlich NICHT das Signal selber sein!>> Leute, lasst die Finger von FPGAs, wenn ihr das nicht versteht!
Ich habe verstanden, dass man keine kombinatorische Rückkopplung
erstellen soll. ABer warum das prinzipiell nicht logisch sein soll
verstehe ich nicht. Es ist ein Taktgenerator mit undefinierter
STabilität und Frequenz, aber: warum nicht? Für einen speziellen Fall
evtl. will das jemand haben?
Jörg schrieb:> Es ist ein Taktgenerator mit undefinierter STabilität und Frequenz
Ein einstufiges auf sich selbst rückgekoppeltes Logikelement ist dabei
aber als Taktquelle für Flipflops völlig unbrauchbar, weil es keine Zeit
hat, sich irgendwie zu stabilisieren und deshalb nur im linearen Bereich
mit einem Sinus geringer Amplitude und der höchstmöglichen Frequenz vor
sich hinschwingt.
Erst mehrere LUT hintereinander bringen da eine brauchbare Impulsform
und annehmbare Frequenzen zuwege.
Im "Altera Advanced Synthesis Cookbook"
(https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/manual/stx_cookbook.pdf)
ist so ein Ringoszillator als "offizielles Beispiel" für einen True
Random Number Generator beschrieben. Dazu gibt es auch ein
Beispieldesign (Verilog), das - wie Lothar's Version - eine Logikkette
nutzt, um den Wobbler auf eine handhabbare Frequenz runterzubringen.
1
//baeckler-11-14-2005
2
//counterwithunstablecountenablesignalbased
3
//onringoscillator.
4
5
modulering_counter(clk,rst,out);
6
7
parameterDELAY=100;
8
9
inputclk,rst;
10
output[15:0]out;
11
12
wire[DELAY-1:0]delay_line/*synthesiskeep*/;
13
14
reg[15:0]cntr;
15
regsync0;
16
regwobble;
17
18
//unstableringoscillator
19
genvari;
20
generate
21
for(i=1;i<DELAY;i=i+1)
22
begin:del
23
assigndelay_line[i]=delay_line[i-1];
24
end
25
endgenerate
26
assigndelay_line[0]=!delay_line[DELAY-1];
27
28
//syncitovertotheinputclock
29
always@(posedgeclk)begin
30
sync0<=delay_line[0];
31
wobble<=sync0;
32
end
33
34
//countwhenthewobblyoscillatorishigh
35
always@(posedgeclkorposedgerst)begin
36
if(rst)cntr<=0;
37
elseif(wobble)cntr<=cntr+1;
38
end
39
40
assignout=cntr;
41
42
endmodule
Das hier steht allerdings auch dabei:
> These designs intentionally violate good synchronous design practices.
Das Verilog-Beispiel verwendet (wie Lothar's Version) das KEEP-Attribut,
um die Synthese davon abzubringen, delay_line wegzuoptimieren (lässt man
es weg, verschwindet delay_line folgerichtig).
Also meiner Meinung nach gehts hier mit den begriffen drunter drüber, da
muss man sich erst mal einigen worüber hier diskutiert wird.
M.M nach bricht die Synthese nicht ab, sondern läuft durch und einem
späteren Implementierungsschritt wird das Schaltungsteil mit Warnings
weg-optimiert.
Für die Synthese (Übersetzen Hochsprache in Netzliste) wird wohl das
Synthesetool XST aus der ISE verwendet, nicht VIVADO.
Diese Netzliste wird dann vom ImplementierungsTool map in die konkteten
Schaltungselemente des jeweiligen FPGA-Typs (LUT's, FF's, etc)
umtransformiert. Dabei kann
eine Optimierung erfolgen das Blöcke die augenscheinlich nichts tun als
kontante Zustände zu halten aus der Netzliste entfernt werden
(Wegoptimiert).
Solche Blöcke sind bspw. Componenten ohne Ausgang, (geradzahlige)
Verkettung inverser Funktionen, etc.
map versucht also dem Entwickler die Optimierungsarbeit abzunehmen, kann
aber dabei übers Ziel hinausschiessen. Deshalb gibt es verschiedene
Möglichkeiten diese Optimierung gezielt auszuschalten.
Siehe:
https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_5/devref.pdf
S.84 Punkt "unused logic"
Jörg schrieb:> Weltbester FPGA-Pongo schrieb im Beitrag #5435479:>> Dieser Takt kann natürlich NICHT das Signal selber sein!>>>> Leute, lasst die Finger von FPGAs, wenn ihr das nicht versteht!>> Ich habe verstanden, dass man keine kombinatorische Rückkopplung> erstellen soll. ABer warum das prinzipiell nicht logisch sein soll> verstehe ich nicht. […] aber: warum nicht? Für einen speziellen Fall> evtl. will das jemand haben?
Genau das wollte ich auch schreiben. Und wenn es nur ist, um es mal
probiert zu haben. Es gibt absolut keinen Grund, warum man das nicht
machen sollte. (Oder geht das FPGA dadurch kaputt? Das würde mich sehr
überraschen, wäre dann aber der einzige Grund.)
Markus F. schrieb:> Das hier steht allerdings auch dabei:>>> These designs intentionally violate good synchronous design practices.
Aber eben 'intentionally'.
Markus F. schrieb:> Im "Altera Advanced Synthesis Cookbook">
(https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/manual/stx_cookbook.pdf)
> ist so ein Ringoszillator als "offizielles Beispiel" für einen True> Random Number Generator beschrieben.
An den Fall habe ich auch eben gedacht. Aber warum eine Kette? Dafür
müsste doch ein einzelnes rückgekoppeltes Element mit nachgeschalteter
Eintaktungskette besser geeignet sein, oder? Bekommt man mit einer Kette
nicht ein langsameres und relativ stabiles Signal?
Dussel schrieb:> An den Fall habe ich auch eben gedacht. Aber warum eine Kette? Dafür> müsste doch ein einzelnes rückgekoppeltes Element mit nachgeschalteter> Eintaktungskette besser geeignet sein, oder? Bekommt man mit einer Kette> nicht ein langsameres und relativ stabiles Signal?
Eben.
Ohne die Kette schwingt das Ding im GHz-Bereich und Du bekommst das im
Leben nicht eingetaktet.
Markus F. schrieb:> Dussel schrieb:>> An den Fall habe ich auch eben gedacht. Aber warum eine Kette? Dafür>> müsste doch ein einzelnes rückgekoppeltes Element mit nachgeschalteter>> Eintaktungskette besser geeignet sein, oder? Bekommt man mit einer Kette>> nicht ein langsameres und relativ stabiles Signal?>> Eben.>> Ohne die Kette schwingt das Ding im GHz-Bereich und Du bekommst das im> Leben nicht eingetaktet.
Das ist ein Grenzfall, mit dem ich mich nicht mehr auskenne. Warum
funktioniert das nicht?
Das undefinierbare Signal geht an einen Flipflopeingang. Bei einer
Taktflanke wird dieses Eingangssignal übernommen. Natürlich werden die
Zeitvorgaben verletzt, aber das ist ja hier gewünscht. Das Flipflop wird
aber doch trotzdem nach einiger Zeit einen definierten Zustand annehmen,
oder? Warum nicht? Außerhalb der Setup- und Holdzeit ist es doch egal,
was am Eingang passiert, oder? Noch ein Flifpflop dahinter und man
sollte ein getaktetes (vielleicht zufälliges) Signal haben.
Wo ist der Fehler?
Dussel schrieb:> Das Flipflop wird> aber doch trotzdem nach einiger Zeit einen definierten Zustand annehmen,> oder? Warum nicht?
Mal an die Eingangskapazität des FF gedacht?
Ein signal wechselt nicht schlagartig zwischen '0' und '1' pegel sondern
steigt almählich an, weil eine (parasitäre) Kapazität umzuladen ist.
Bei sehr hohen Frequenzen ist es gut möglich, das der Ringoszillator
schon wieder umkippt, bevor die Schaltschwelle am FF erreicht ist.
C. A. Rotwang schrieb:> Bei sehr hohen Frequenzen ist es gut möglich, das der Ringoszillator> schon wieder umkippt, bevor die Schaltschwelle am FF erreicht ist.
Das heißt also, dass das Eingangssignal auch nach der Holdzeit noch
Auswirkungen auf das Ausgangssignal hat. Das wusste ich zum Beispiel
noch nicht. Aber dann ist es verständlich.
Dussel schrieb:> C. A. Rotwang schrieb:>> Bei sehr hohen Frequenzen ist es gut möglich, das der Ringoszillator>> schon wieder umkippt, bevor die Schaltschwelle am FF erreicht ist.> Das heißt also, dass das Eingangssignal auch nach der Holdzeit noch> Auswirkungen auf das Ausgangssignal hat. Das wusste ich zum Beispiel> noch nicht. Aber dann ist es verständlich.
?Hab ich eigentlich nicht sagen wollen, die Ausage ist eher die:
"weil es keine Zeit
hat, sich irgendwie zu stabilisieren und deshalb nur im linearen Bereich
mit einem Sinus -geringer Amplitude- und der höchstmöglichen Frequenz
vor
sich hinschwingt"
Beitrag "Re: Warum ist folgende Synthese nicht möglich?"
Wichtig ist das die Amplitude die "minimale Sampledauer" lang über der
Schaltschwelle liegt, das ist hier nicht gegeben.
Ich habe das Gefühl, wir reden ein bisschen aneinander vorbei.
Das Nichtgatter: Das schwingt immer um die Umschaltschwelle herum.
Natürlich nicht mit Logikpegel und schönen Flanken, sondern irgendwas
analoges dazwischen.
Das Flipflop: Das bekommt am Eingang ein schwingendes Signal, das man
aus digitaler Sicht als undefiniert bezeichnen kann. Bei einer
Taktflanke des Systemstakts (also des geringen, definierten Takts)
übernimmt das Flipflop den Eingangswert. Der ist aber unbestimmt bzw.
instabil, also geht das Flipflop am Ausgang in einen metastabilen
Zustand. Der ist eben nicht stabil und der Ausgang wird zufällig in
einen stabilen Zustand kippen. Um daraus ein definiertes Signal zu
erzeugen, schaltet man noch mindestens ein Flifpflop dahinter und
bekommt so ein sauberes Signal.
Falsch oder was meinst du?
Oder meinst du, dass das Gatter so schwingt, dass das nachgeschaltete
Flipflop gar nicht metastabil wird, weil das schwingende Signal immer
als eindeutig 0 oder eindeutig 1 gelesen wird (wenn es zum Beispiel
zwischen 0 und 0,1 V schwingt)?
Ich habe mir mal ausnahmsweise nicht die Vorschau angesehen und deshalb
deinen letzten Beitrag nicht gelesen.
Also meinst du doch das letzte? Das Signal führt nicht dazu, dass das
Flipflop umschaltet?
Dussel schrieb:> Also meinst du doch das letzte? Das Signal führt nicht dazu, dass das> Flipflop umschaltet?
Ja das meine ich, das Signal am D-Input des FF ist zu niedrig/resp. zu
hoch als das der Pegel am Q-Ausgang des FF umschaltet.
C. A. Rotwang schrieb:> Dussel schrieb:>>> Also meinst du doch das letzte? Das Signal führt nicht dazu, dass das>> Flipflop umschaltet?>> Ja das meine ich, das Signal am D-Input des FF ist zu niedrig/resp. zu> hoch als das der Pegel am Q-Ausgang des FF umschaltet.
Achso. Ok. Das habe ich erst nicht bedacht. Dann ist es klar. Danke.
In einem FPGA hat man kein direkt rückgekoppeltes Nicht-Gatter, auch
wenn man das so beschreibt. Um das im FPGA zu implementieren, wird das
NICHT mit einer LUT gebildet, der Ausgang der LUT geht durch einen
Multiplexer am FlipFlop vorbei zum Ausgang. Dieser Ausgang wird über
weitere Multiplexer der Routing-Resourcen wieder an den Eingang des
LUT-RAMs zurückgeführt.
Da sind also viele Transistoren und Gatter mit wahrscheinlich
unterschiedlichen Schaltschwellen beteiligt und das führt wahrscheinlich
zu einer Hysterese in der Rückkopplung, die Amplitude und Frequenz der
Schwingung bestimmt.
Als ich mit FPGAs angefangen habe, habe ich auch solche Versuche
gemacht, das funktionierte am Einfachsten über zwei extern verbundene
Pins mit einem Inverter im FPGA. Dann kann man auch etwas mit dem Osci
messen, und mit externen R-C Gliedern Verzögerungen einbauen. Auch einen
Quarz Oszillator kann man so bauen.
Dussel schrieb:> Dussel schrieb:> Ich habe schon Quartus und Libero drauf, da werde ich nicht für so ein> theoretisches Experiment noch Vivado installieren.
Ah, du bist nicht der erste Poster, das hatte ich übersehen.
>> Cle schrieb:>> Wenn Quartus dir das angehängte ausspuckt würde ich sofort Vorsichtig>> werden und die Software so nicht benutzen.> Vorsichtig sollte man bei Logikbeschreibungen immer sein. Dazu gehört> auch, die Warnungen zu beachten. Dann fällt auch auf, dass es die> kombinatorische Schleife gibt und man kann entscheiden, ob das gewollt> ist.
Wenn das Tool erstmal die unsinnigste aller Varianten implementiert
würde man das sehen, aber damit wäre das Tool auf Dauer nicht für mich
einsetzbar.
Warum die kombinatorische Schleife erlauben wenn es in 99% der Fälle ein
Fehler ist und nicht andersherum? Damit passieren viel mehr ungewollte
Fehler die viel zuviel Zeit kosten.
>> Cle schrieb:>> Und jetzt die andere Software "nicht so weit" zu schimpfen weil sie>> etwas eigentlich fatales macht was die andere nicht ohne explizite>> Direktive erzeugt ist doch auch eine etwas zu kurz gekommene>> Schlussfolgerung, oder?> Kann es sein, dass du da was vertauscht hast? ;-)> Wir reden hier von professionellen Programmen. Die können man> nachfragen, ob man das wirklich so will, aber ich finde, die sollten> einem nicht verbieten (oder nur auf speziellen Antrag erlauben), etwas> zu tun.
Nein, da ist nichts vertauscht. Wenn die Software eine erstmal unsinnige
Variante (und das ist dies ohne explizite andere Anweisung wie in den
schönen Beispielen von dir mit Synthesis Keep Attributen) synthetisiert
ist das für eine anspruchsvolle Synthesesoftware falsch. Dein Weg würde
zu viel mehr Problemen führen weil eben alle es erstmal falsch machen.
Die 1% der Nutzer die wirklich wissen was sie tun dürfen das dann mit
einem einfachen Attribut ohne Fehler.